标准程序
这是第五版
#include <cstdio>
#include <algorithm>
using namespace std;
const int MAXN = 1e4 + 10;
struct floor{
int sec, f;
};
floor a[MAXN];
bool cmp(const floor &a, const floor &b)
{
return a.sec > b.sec;
}
int main()
{
// freopen("hyb8.in", "r", stdin);
// freopen("hyb8.out", "w", stdout);
int n, m, ans = 0;
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i].sec);
a[i].f = i;
}
sort(a + 2, a + n + 1, cmp);
int p = 0;
for (p = 1; p <= m; p++) {
if (a[p + 1].sec < 0) {
break;
}
}
int insert = 0;
if ((p - 2 + 1) < m) {
insert = p;
while (a[insert].sec <= a[1].sec) {
insert--;
}
}
for (int i = 2; i <= p; i++) {
ans += a[i].sec;
}
printf("%d\n", ans);
for (int i = p; i >= 2; i--)
{
if (i == insert)
{
printf("%d ", a[1].f);
}
printf("%d ", a[i].f);
}
if (a[2].sec < 0) {
printf("1");
}
return 0;
}
随机数据生成程序
#include <cstdio>
#include <cstdlib>
#include <ctime>
using namespace std;
const int MOD = 1e4;//0 <= M <= MOD, M < N < MOD, -MOD <= T <= MOD
bool v[MOD << 3];
int random_neg()
{
return (rand() - (2 * rand())) % MOD;
}
int random_pos()
{
return (rand() + rand()) % MOD;
}
int neg_to_pos(int a)
{
if (a < 0)
return a + MOD + 10;
return a;
}
int main()
{
freopen("hyb9.in", "w", stdout);
srand(time(0));
int n = random_pos();
int m = 1e4;
while (m >= n) {
m = random_pos();
}
printf("%d %d\n", n, m);
for (int i = 1; i <= n; i++) {
int a = random_neg();
if (v[neg_to_pos(a)] == 0) {
v[neg_to_pos(a)] = 1;
printf("%d ", a);
}
else {
i--;
}
}
return 0;
}
共 10 条回复
《"下次一定"》
下次一定不改数据, 下次一定
膜一膜大佬QWQ
diao mao