Cod sursa(job #467531)

Utilizator DraStiKDragos Oprica DraStiK Data 29 iunie 2010 11:54:00
Problema Congr Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <algorithm>
using namespace std;

#define DIM 300005
#define sc second
#define fs first

pair <int,int> a[DIM],b[DIM];
int p,sum;

void read ()
{
    int i;

    scanf ("%d",&p);
    for (i=1; i<=p; ++i)
    {
        scanf ("%d",&a[i].fs);
        sum=(sum+a[i].fs)%p;
        a[i].sc=i;
    }
    for (i=1; i<p; ++i)
    {
        scanf ("%d",&b[i].fs);
        b[i].sc=p+i;
    }
}

void solve ()
{
    int in,out;

    for ( ; sum; )
    {
        out=rand ()%p+1;
        in=rand ()%(p-1)+1;
        sum=(sum+b[in].fs-a[out].fs+p)%p;
        swap (a[in],b[out]);
    }
}

void print ()
{
    int i;

    for (i=1; i<=p; ++i)
        printf ("%d ",a[i].sc);
}

int main ()
{
    srand (time (0));
    freopen ("congr.in","r",stdin);
    freopen ("congr.out","w",stdout);

    read ();
    solve ();
    print ();

    return 0;
}