Cod sursa(job #808578)

Utilizator lianaliana tucar liana Data 6 noiembrie 2012 22:22:55
Problema Curcubeu Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<stdio.h>
#include<set>
#include<utility>
#include<vector>
using namespace std;
#define nmax 1000005
long a, b, c, i, n, inc, sf;
vector < pair<int, int> > v[nmax][2];
vector < pair<int, int> > ::iterator it;
set < pair<int, int> > h;

void citire()
{
	for (i=1;i<=n-1;i++)
	{
		if (a<b)
		{	inc=a;	sf=b;}
		else
		{	inc=b;	sf=a;}
		v[inc][0].push_back(make_pair(-i,c));
		v[sf][1].push_back(make_pair(-i,c));
		a=(a*(i+1))%n;	b=(b*(i+1))%n;	c=(c*(i+1))%n;
	}
}

void rezolvare()
{
	for (i=1;i<=n-1;i++)
	{
		for (it=v[i][0].begin();it!=v[i][0].end();it++)
			h.insert(*it);
		if (h.size()==0)
			printf("0\n");
		else
			printf("%ld\n",(*h.begin()).second);
		for (it=v[i][1].begin();it!=v[i][1].end();it++)
			h.erase(*it);
	}
}

int main()
{
	freopen("curcubeu.in","r",stdin);
	freopen("curcubeu.out","w",stdout);
	scanf("%ld %ld %ld %ld",&n,&a,&b,&c);
	citire();
	rezolvare();	
	return 0;
}