Cod sursa(job #923591)

Utilizator alex_unixPetenchea Alexandru alex_unix Data 23 martie 2013 18:06:40
Problema Congr Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb

#include <cstdio>
#include <cstdlib>
#include <ctime>

const int MAX_SIZE(300000 << 1);

int v [MAX_SIZE];
int v2 [MAX_SIZE];
int result [MAX_SIZE];
int p, p2;

inline void read (void)
{
	std::freopen("congr.in","r",stdin);
	std::scanf("%d",&p);
	p2 = (p << 1) - 1;
	for (int i(0) ; i < p2 ; ++i)
		std::scanf("%d",&v[i]);
	std::fclose(stdin);
}

inline void print (void)
{
	std::freopen("congr.out","w",stdout);
	for (int i(0) ; i < p ; ++i)
		std::printf("%d ",result[i] + 1);
	std::putchar('\n');
	std::fclose(stdout);
}

inline void swap (int &a, int &b)
{
	int temp(a);
	a = b;
	b = temp;
}

inline void compute (void)
{
	register long long sum(0);
	int i, j;
	for (i = 0 ; i < p ; ++i)
	{
		result[i] = i;
		sum += v[i];
	}
	p2 -= p;
	for (i = 0, j = p ; i < p2 ; ++i, ++j)
		v2[i] = j;
	while (sum % p)
	{
		i = std::rand() % p;
		j = std::rand() % p2;
		sum = sum - v[result[i]] + v[result[j]];
		swap(result[i],v2[j]);
	}
}

int main (void)
{
	std::srand(std::time(0));
	read();
	compute();
	print();
	return 0;
}