Cod sursa(job #923649)

Utilizator alex_unixPetenchea Alexandru alex_unix Data 23 martie 2013 18:35:41
Problema Congr Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb

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

const int MAX_SIZE(300001);

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

inline int number (char *s)
{
	int result(0);
	for (int i(0) ; s[i] ; ++i)
		result = result * 10 + s[i] - '0';
	return result;
}

inline void read (void)
{
	char s [10];
	std::freopen("congr.in","r",stdin);
	std::scanf("%d\n",&p);
	p2 = (p << 1) - 1;
	for (int i(1) ; i <= p2 ; ++i)
	{
		std::scanf("%s ",s);
		v[i] = number(s);
		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 compute (void)
{
	int i, j;
	p2 -= p;
	while (sum % p)
	{
		i = 1 + std::rand() % p;
		j = 1 + p + std::rand() % p2;
		sum = sum - v[i] + v[j];
		std::swap(position[i],position[j]);
		std::swap(v[i],v[j]);
	}
}

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