Cod sursa(job #923625)

Utilizator alex_unixPetenchea Alexandru alex_unix Data 23 martie 2013 18:25:14
Problema Congr Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb

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

const int MAX_SIZE(300001);

int v [MAX_SIZE << 1];
int position [MAX_SIZE << 1];
int p, p2;
long long sum;

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

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

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

inline void compute (void)
{
	int i, j;
	p2 -= p;
	while (sum % p)
	{
		i = 1 + std::rand() % p;
		j = 1 + p + std::rand() % p2;
		sum = sum - v[position[i]] + v[position[j]];
		swap(position[i],position[j]);
	}
}

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