Cod sursa(job #1086085)

Utilizator andreiiiiPopa Andrei andreiiii Data 17 ianuarie 2014 18:32:55
Problema Curcubeu Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>

using namespace std;

const int N=1000005;

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

int a[N], b[N], c[N], d[N], e[N];

int main()
{
    int n, i, j, k, mins, maxs, aux;
    fin>>n>>a[1]>>b[1]>>c[1];
    for(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(i=n-1;i;i--)
    {
        if(a[i]>b[i])
        {
            maxs=a[i];
            mins=b[i];
        }
        else
        {
            maxs=b[i];
            mins=a[i];
        }
        for(j=mins;;j++)
        {
            k=j;
            while(d[j]) j=e[j]+1;
            while(d[k])
            {
                aux=k;
                k=e[k]+1;
                e[aux]=j-1;
            }
            if(j>maxs) break;
            d[j]=c[i];
            e[j]=maxs;
        }
    }
    for(i=1;i<n;i++) fout<<d[i]<<"\n";
    fin.close();
    fout.close();
}