Cod sursa(job #466841)

Utilizator cosmin79Carabet Cosmin Andrei cosmin79 Data 27 iunie 2010 18:34:38
Problema Congr Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NMAX 600005
int n,A[NMAX],r,B[NMAX],t,C[NMAX],f;
void read()
{
	scanf("%d",&n);
	int i,x;
	for (i=1; i<2*n; i++)
	{
		scanf("%d",&x);
		if (x>=n)
			x%=n;
		A[++r]=x;
	}
}
void init()
{
	t=r;
	int i;
	for (i=1; i<=r; i++)
		B[i]=i;
}
void solve()
{
	int i,act,rest,find=0;
	srand(time(0));
	while (!find)
	{
		f=0; rest=0; find=0;
		init();
		for (i=1; i<n; i++)
		{
			act=rand()%t+1;
			rest+=A[B[act]];
			if (rest>=n)
				rest-=n;
			C[++f]=B[act];
			B[act]=B[t];
			t--;
		}
		rest=(n-rest)%n;
		for (i=1; i<=t; i++)
			if (A[B[i]]==rest)
			{
				C[++f]=B[i];
				find=1;
				break ;
			}
	}
}
void show()
{
	int i;
	for (i=1; i<=n; i++)
		printf("%d ",C[i]);
	printf("\n");
}
int main()
{
	freopen("congr.in","r",stdin);
	freopen("congr.out","w",stdout);
	read();
	solve();
	show();
	return 0;
}