Cod sursa(job #1216094)

Utilizator BLz0rDospra Cristian BLz0r Data 3 august 2014 12:17:03
Problema Curcubeu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <cstdio>
#include <algorithm>
using namespace std;

FILE *f=fopen ("curcubeu.in","r");
FILE *g=fopen ("curcubeu.out","w");

int a[1000005],b[1000005],c[1000005],next[1000005],sol[1000005];
 
int main(){
    int n,st,dr;
   
    fscanf (f,"%d%d%d%d",&n,&a[1],&b[1],&c[1]);
	
    for (int i=2;i<n;++i){
		a[i]=(1LL*a[i-1]*i)%n;
		b[i]=(1LL*b[i-1]*i)%n;
		c[i]=(1LL*c[i-1]*i)%n;
	}
	
    for (int i=n-1;i>0;--i){
		st=min(a[i],b[i]);
		dr=max(a[i],b[i]);
		for (int j=st;j<=dr;++j){
			while (next[j] && j<=dr) j=next[j];
			if (j<=dr){
				sol[j]=c[i];
				next[j]=dr+1;
			}
		}
	}
	
    for (int i=1;i<n;++i) fprintf (g,"%d\n",sol[i]);

    return 0;
}