Cod sursa(job #940605)

Utilizator Cosmin1490Balan Radu Cosmin Cosmin1490 Data 16 aprilie 2013 18:49:31
Problema Curcubeu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <stdlib.h>
#include <fstream>
#include <iostream>
#include <string>
#include <queue>
#include <stack>
#include <vector>
#include <string.h>
#include <iomanip>
#include <time.h>
#include <list>
#include <algorithm>
#include <math.h>
#include <assert.h>
using namespace std;


const string file = "curcubeu";

const string infile = file + ".in";
const string outfile = file + ".out";

#define MAXN 1000005

int Cul[MAXN];
int Next[MAXN];

int A[MAXN], B[MAXN], C[MAXN];
int N;


int main()
{
	ifstream fin(infile.c_str());

	fin >> N >> A[1] >> B[1] >> C[1];

	fin.close();


	if(A[1] > B[1]) swap(A[1], B[1]); 

	Next[1] = 2;
	for(int i = 2; i < N; i++)
	{
		A[i] = (A[i-1] * 1LL * i) % N;
		B[i] = (B[i-1] * 1LL * i) % N;
		C[i] = (C[i-1] * 1LL * i) % N;

		if(A[i] > B[i])	swap(A[i], B[i]);
		Next[i] = i + 1;
	}

	for(int i = N-1; i >= 1; i--)
	{
		for(int j = A[i], aux; j <= B[i]; aux = Next[i], Next[i] = B[i] + 1, j = aux)
		{
			if(Cul[i] == 0) 
				Cul[i] = C[i];
		}
	}


	ofstream fout(outfile.c_str());


	for(int i = 1; i < N; i++)
	{
		fout << Cul[i] << "\n";
	}

	fout.close();
	
}