Cod sursa(job #1151144)

Utilizator lianaliana tucar liana Data 23 martie 2014 21:19:42
Problema Congr Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<stdio.h>
#include<ctime>
#include<cstdlib>
#define pmax 300005
using namespace std;
int i, n, x, p, sum, p1, p2, aux, v[2*pmax], a[2*pmax];

int main()
{
    freopen("congr.in","r",stdin);
    freopen("congr.out","w",stdout);
    srand(time(0));
    scanf("%ld",&p);
    n=2*p-1;
    for (i=1;i<=n;i++)
    {
        scanf("%ld",&x);
        v[i]=x%p;
        if (i<=p)
        {
            sum+=v[i];
            if (sum>=p)
                sum-=p;
        }
        a[i]=i;
    }
    while (sum)
    {
        p1=rand()%p*rand()%p+1;
        p2=rand()%p*rand()%p+p+1;
        if(p2>n)
            p2=n;
        aux=a[p1];    a[p1]=a[p2];  a[p2]=aux;
        sum+=v[a[p1]];
        sum-=v[a[p2]];
        if(sum<0)
            sum+=p;
        if (sum>=p)
            sum-=p;
    }
    for (i=1;i<=p;i++)
        printf("%ld ",a[i]);
    return 0;
}