Pagini recente » Cod sursa (job #1269372) | Cod sursa (job #334663) | Cod sursa (job #1668424) | Cod sursa (job #2900320) | Cod sursa (job #1987189)
#include <cstdio>
#include <ctype.h>
#include <time.h>
#include <stdlib.h>
typedef long long i64;
const int MAXN = 3e6;
#define BUF_SIZE 4096
FILE *f;
int v[2 * MAXN + 1], sol[2 * MAXN + 1];
char buf[BUF_SIZE];
int pos = BUF_SIZE;
inline char getChar() {
if (pos == BUF_SIZE) {
fread(buf, BUF_SIZE, 1, f);
pos = 0;
}
return buf[pos++];
}
inline int read() {
int result = 0;
char c;
do {
c = getChar();
} while (!isdigit(c));
do {
result = 10 * result + c - '0';
c = getChar();
} while (isdigit(c));
return result;
}
void swap(int &a, int &b) {
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
int main() {
srand(time(NULL));
int n, m;
i64 s;
f = fopen("congr.in", "r");
n = read();
s = 0;
for (int i = 1; i <= 2 * n; ++i) {
v[i] = read();
if (i <= n) {
s += v[i];
}
sol[i] = i;
}
fclose(f);
m = n - 1;
while (s & m) {
int x = rand() + 1 % n;
int y = rand() + n % n;
if (y == n) {
++y;
}
s = s - v[x] + v[y];
swap(v[x], v[y]);
swap(sol[x], sol[y]);
}
f = fopen("congr.out", "w");
for (int i = 1; i <= n; ++i) {
fprintf(f, "%d ", sol[i]);
}
fclose(f);
return 0;
}