Pagini recente » Cod sursa (job #196472) | Cod sursa (job #1331568) | Cod sursa (job #552490) | Cod sursa (job #1829658) | Cod sursa (job #1149651)
#define PMAX 300005
#include <cstdio>
#include <ctime>
#include <cstdlib>
using namespace std;
FILE *fin, *fout;
int nr[PMAX], poz[PMAX];
int main()
{
srand(time(NULL));
long long r1, r2, s; int aux, p, p2, i;
fin=fopen("congr.in", "r"); fout=fopen("congr.out", "w");
fscanf (fin, "%d", &p); p2=2*p;
for (i=0; i<p; ++i){
fscanf (fin, "%d", &nr[i]);
poz[i]=i;
}
while (1) {
r1=( (rand()*rand()%9901)*(rand()*rand()%8801)+rand()%2 ) % p2;
r2=( (rand()*rand()%9901)*(rand()*rand()%8801)+rand()%2 ) % p2 + p;
aux=nr[r1]; nr[r1]=nr[r2]; nr[r2]=aux;
poz[r1]=r2; poz[r2]=r1;
for (i=0; i<p; ++i) {
s+=nr[i];
if (s>p) s-=p;
}
if (s%p==0) break;
}
for (i=0; i<p; ++i)
fprintf (fout, "%d ", poz[i]);
fclose(fin); fclose(fout);
return 0;
}