Cod sursa(job #1172131)

Utilizator ArchazeyBaltatu Andrei-Mircea Archazey Data 16 aprilie 2014 20:33:05
Problema Curcubeu Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<fstream>
#define max(a,b) (((a)>=(b))?(a):(b))
#define min(a,b) (((a)<=(b))?(a):(b))
using namespace std;

struct intervale
{
    int a,b,c;
};

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

int n;
intervale l[1000005];
int NEXT[1000005],v[1000005];

int main()
{
    int i,j,inceput,sfarsit;
    fin>>n>>l[1].a>>l[1].b>>l[1].c;
    for (i=2;i<=n-1;i++)
        {
            l[i].a=(1LL*l[i-1].a*i)%n;
            l[i].b=(1LL*l[i-1].b*i)%n;
            l[i].c=(1LL*l[i-1].c*i)%n;
        }
    for (i=n-1;i>=1;i--)
        {
            inceput=min(l[i].a,l[i].b);
            sfarsit=max(l[i].a,l[i].b);
            for (j=inceput;j<=sfarsit;j++)
            {
                while (NEXT[j] && j<=sfarsit)
                    j=NEXT[j];
                if (j<=sfarsit)
                    {
                        v[j]=l[i].c;
                        NEXT[j]=sfarsit+1;
                    }
            }
        }
    for (i=1;i<=n-1;i++)
        fout<<v[i]<<"\n";
    return 0;
}