Pagini recente » Cod sursa (job #924864) | Cod sursa (job #735137) | Cod sursa (job #2823190) | Cod sursa (job #770280) | Cod sursa (job #757814)
Cod sursa(job #757814)
#include <ctime>
#include <cstdlib>
#include <fstream>
using namespace std;
int N, A[600002];
int s1[300002], s2[300002];
int main()
{
ifstream fin("congr.in");
ofstream fout("congr.out");
fin >> N;
for (int i = 1; i <= 2 * N - 1; ++i)
{
fin >> A[i];
A[i] %= N;
}
int sum = 0;
for (int i = 1; i <= N; ++i)
{
sum += A[i];
if (sum >= N) sum -= N;
s1[++s1[0]] = i;
}
for (int i = N + 1; i <= 2 * N - 1; ++i)
s2[++s2[0]] = i;
srand(time(0));
while (sum != 0)
{
int out = rand() % N + 1, in = rand() % (N - 1) + (N + 1);
sum -= s1[out], sum += s2[in];
swap(s1[out], s2[in]);
if (sum < 0) sum += N;
if (sum >= N) sum -= N;
}
for (int i = 1; i <= N; ++i)
fout << s1[i] << ' ';
fout << '\n';
fin.close();
fout.close();
}