Cod sursa(job #947195)

Utilizator matei_cChristescu Matei matei_c Data 6 mai 2013 21:09:01
Problema Curcubeu Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<fstream>
#include<algorithm>
using namespace std ;

#define maxn 10000001

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

int n ;

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

int sol[maxn], unde[maxn] ;

int main()
{
    fin >> n >> a[1] >> b[1] >> c[1] ;

    unde[1] = 1 ;

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

        unde[i] = i ;
    }

    for(int i = n - 1; i >= 1; --i )
    {
        int st = min( a[i], b[i] ) ;
        int dr = max( a[i], b[i] ) ;

        int ind = st ;

        while(ind <= dr )
        {
            if( unde[ind] == ind )
            {
                sol[ind] = c[i] ;
                unde[ind] = dr + 1 ;
                ++ind ;
            }
            else
            {
                int aux = unde[ind] ;
                unde[ind] = dr + 1 ;
                ind = aux ;
            }
        }
    }

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

    return 0 ;
}