Cod sursa(job #1154425)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 26 martie 2014 10:17:41
Problema Congr Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <ctime>
#include <cstdlib>
#include <algorithm>
using namespace std;
int P, v[600100], poz[600100], sum;

int main()
{
	int i, j;
	ifstream fin("congr.in");
	fin >> P;
	for(i = 1; i <= P; ++i)
	{
		fin >> v[i];
		poz[i] = i;
		v[i] %= P;
		sum += v[i];
		if(sum >= P)
			sum -= P;
	}
	for(i = P + 1; i < 2 * P; ++i)
	{
		fin >> v[i];
		v[i] %= P;
		poz[i] = i;
	}
	fin.close();
	
	srand(time(NULL));
	while(sum)
	{
		i = rand() % P + 1;
		j = rand() % (P - 1) + P + 1;
		if(v[i] == v[j])
			continue;
		sum = sum - v[i] + v[j] + P;
		while(sum >= P)
			sum -= P;
		swap(v[i], v[j]);
		swap(poz[i], poz[j]);
	}
	
	ofstream fout("congr.out");
	for(i = 1; i <= P; ++i)
		fout << poz[i] << ' ';
	fout << "\n";
	fout.close();
	return 0;
}