Cod sursa(job #1149696)

Utilizator evodaniVasile Daniel evodani Data 22 martie 2014 10:34:48
Problema Congr Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#define PMAX 10005
#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-1;
    for (i=0; i<p2; ++i) {
        fscanf (fin, "%d", &nr[i]);
        poz[i]=i;
    }
    while (1) {
        r1=( (rand()*rand()%9901)*(rand()*rand()%8801)+rand()%2 ) % p;
        r2=( (rand()*rand()%9901)*(rand()*rand()%8801)+rand()%2 ) % p + p;
        aux=nr[r1]; nr[r1]=nr[r2]; nr[r2]=aux;
        aux=poz[r1]; poz[r1]=poz[r2]; poz[r2]=aux;
        s=0;
        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]+1);
    fclose(fin); fclose(fout);
    return 0;
}