Cod sursa(job #947179)

Utilizator matei_cChristescu Matei matei_c Data 6 mai 2013 20:57:27
Problema Curcubeu Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include<fstream>
#include<algorithm>
using namespace std ;

ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");

#define maxn 100001

int n ;

int a[maxn], b[maxn], c[maxn] ;

int sol[maxn] ;
int unde[maxn] ;

void citire()
{
    fin >> n ;

    fin >> a[1] >> b[1] >> c[1] ;

    if( a[1] > b[1] )
        swap( a[1], b[1] ) ;

    for(int i = 2; i < n; ++i )
    {
        a[i] = ( a[ i - 1 ] * i ) % n ;
        b[i] = ( b[ i - 1 ] * i ) % n ;
        c[i] = ( c[ i - 1 ] * i ) % n ;

        if( a[i] > b[i] )
            swap( a[i], b[i] ) ;
    }

}

void rezolvare()
{
    for(int i = n - 1; i >= 1; --i )
    {
        int ind = a[i] ;

        while( ind <= b[i] )
        {
            if( sol[ind] == 0 )
            {
                sol[ind] = c[i] ;
                unde[ind] = b[i] + 1 ;
                ++ind ;
            }
            else
                ind = unde[ind] ;
        }
    }
}

void afisare()
{
    for(int i = 1; i < n; ++i )
        fout << sol[i] << "\n" ;
}

int main()
{
    citire() ;

    rezolvare() ;

    afisare() ;

    return 0 ;
}