Cod sursa(job #1149651)

Utilizator evodaniVasile Daniel evodani Data 22 martie 2014 10:19:13
Problema Congr Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#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;
}