Cod sursa(job #482043)

Utilizator mottyMatei-Dan Epure motty Data 2 septembrie 2010 14:03:03
Problema Congr Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
//Congr
#include<cstdio>
#include<cstdlib>
#include<ctime>

using namespace std;

const int N=600006;

int n, v[N], c[N], sum[N];

void Read()
{
	scanf("%d",&n);
	for( int i=1; i<2*n; ++i)
	{
		scanf("%d",&v[i]);
		v[i]%=n;
	}
}

void Initialise()
{
	for( int i=1; i<2*n; ++i)
		c[i]=i;
}

void Solve()
{
	srand(time(0));
	int lim, x, sm;
	while(1)
	{
		Initialise();
		lim=2*n-1;
		sm=0;
		for( int i=1; i<n; ++i)
		{
			x=rand()%lim+1;
			sum[i]=c[x];
			sm=(sm+v[c[x]])%n;
			c[x]=c[lim];
			lim--;
		}
		for( int i=1; i<=lim; ++i)
			if( (v[c[i]]+sm)%n==0 )
			{
				printf("%d ",c[i]);
				for( int j=1; j<n; ++j)
					printf("%d ",sum[j]);
				exit(0);
			}
	}
}

int main()
{
	freopen("congr.in","r",stdin);
	freopen("congr.out","w",stdout);
	
	Read();
	Solve();
	
	return 0;
}