Pagini recente » Cod sursa (job #1805598) | Cod sursa (job #1419376) | Cod sursa (job #835357) | Cod sursa (job #1790693) | Cod sursa (job #466841)
Cod sursa(job #466841)
#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;
}