Cod sursa(job #518526)

Utilizator ciprianfFarcasanu Alexandru Ciprian ciprianf Data 1 ianuarie 2011 17:10:18
Problema Congr Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <stdio.h>
#include <algorithm>
#include <time.h>
#include <stdlib.h>
using namespace std;
#define NMAX 300010
int V[NMAX], ind[NMAX];
int n, S;
inline int modulo(int x){
	if(x > n) return x-n;
	if(x < 0) return x+n;
	return x;
}
int main(){
	freopen("congr.in", "r", stdin);
	freopen("congr.out", "w", stdout);
	scanf("%d", &n);
	srand(time(NULL));
	for(int i = 1; i < 2*n; ++i)
		scanf("%d", &V[i]),V[i] %= n, ind[i] = i, S += i <= n ? V[i] : 0;
	while(S){
		int p1 = 1 + rand()%n;
		int p2 = n + 1 + rand()%(n-1);
		S = modulo(S - V[ind[p1]] + V[ind[p2]]);
		swap(ind[p1], ind[p2]);
	}
	for(int i = 1; i <= n; ++i)
		printf("%d ", ind[i]);
	return 0;
}