Cod sursa(job #477048)

Utilizator jeanFMI - Petcu Ion Cristian jean Data 13 august 2010 10:48:59
Problema Congr Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define Nmax 300010

int V[Nmax<<1], In[Nmax], Out[Nmax], r1, r2, i, n, P, S;

void swap (int i, int j)
{
	int aux = In[i]; In[i] = Out[j]; Out[j]=aux;
}


int main()
{
	srand(time(0));
	
	freopen("congr.in","r",stdin);
	freopen("congr.out","w",stdout);
	
	
	scanf("%d",&P);
	
	n = (P<<1) - 1;
	
	for(i=1;i<=n;i++)
		scanf("%d",&V[i]);
	
	for(i=1;i<=P;i++)
	{
		In[i]=i;
		Out[i] = i+P;
		S+=V[i];
		if(S>=P) S%=P;
	}
	
	while( S )
	{
		r1 = 1+ rand() % P;
		r2 = 1+ rand() % (P-1);
		S+=P;
		S-=(V[In[r1]]%P);
		S+=(V[Out[r2]]%P);
		if(S>=P) S%=P;
		swap(r1,r2);
	}
	
	for(i=1;i<=P;i++)
		printf("%d ",In[i]);
	
	return 0;
}