Cod sursa(job #1205269)

Utilizator xtreme77Patrick Sava xtreme77 Data 5 iulie 2014 20:47:32
Problema Curcubeu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <fstream>
#include <bitset>

#define rint register int
#define min(a,b) (((a>b))?(b):(a))
#define max(a,b) (((a>b))?(a):(b))

const char IN [ ] = "curcubeu.in";
const char OUT [ ] = "curcubeu.out";
const int MAX = 1000014;

using namespace std;

int a[MAX],b[MAX],c[MAX],cul[MAX],nxt[MAX],newcol[MAX],nc,n;

bitset < MAX > boolish;
ifstream fin ( IN );
ofstream fout ( OUT );

int main( )
{
    fin >> n;nc = n;
    fin >> a[1] >> b[1] >> c[1];
    for( rint 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( rint i = 1 ; i < n ; ++ i )nxt[i]=i;
    for( n-- ; n >= 1 ; --n ){
        int st=min( a[n] , b[n] );
        int dr=max( a[n] , b[n] );
        int cul=c[n];
        for( rint i = st ; i <= dr ; ++ i ){
            if(boolish[i])
                i=nxt[i]-1;
            else{
                newcol[i]=cul;
                boolish[i]=1;
                nxt[i]=dr+1;
            }
        }
    }
    for( rint i = 1 ; i < nc ; ++ i )
        fout<<newcol[i]<<'\n';
    return 0;
}