Pagini recente » Cod sursa (job #2250015) | Cod sursa (job #279858) | Cod sursa (job #63932) | Cod sursa (job #2326992) | Cod sursa (job #1154439)
#include <fstream>
#include <ctime>
#include <cstdlib>
#include <algorithm>
#include <cstdio>
#define LG 5000000
using namespace std;
int P, v[600100], poz[600100], sum, ind;
char buffer[LG];
inline void Citeste(int &x)
{
while(buffer[ind] < '0' || '9' < buffer[ind])
{
ind++;
if(ind == LG)
{
fread(buffer, 1, LG, stdin);
ind = 0;
}
}
x = 0;
while('0' <= buffer[ind] && buffer[ind] <= '9')
{
x = x * 10 + buffer[ind] - '0';
ind++;
if(ind == LG)
{
fread(buffer, 1, LG, stdin);
ind = 0;
}
}
}
int main()
{
int i, j;
freopen("congr.in", "r", stdin);
fread(buffer, 1, LG, stdin);
Citeste(P);
for(i = 1; i <= P; ++i)
{
Citeste(v[i]);
poz[i] = i;
v[i] %= P;
sum += v[i];
if(sum >= P)
sum -= P;
}
for(i = P + 1; i < 2 * P; ++i)
{
Citeste(v[i]);
v[i] %= P;
poz[i] = i;
}
srand(time(NULL));
while(sum)
{
i = rand() % P + 1;
j = rand() % (P - 1) + P + 1;
if(v[i] == v[j])
continue;
sum = sum - v[i] + v[j] + P;
while(sum >= P)
sum -= P;
swap(v[i], v[j]);
swap(poz[i], poz[j]);
}
ofstream fout("congr.out");
for(i = 1; i <= P; ++i)
fout << poz[i] << ' ';
fout << "\n";
fout.close();
return 0;
}