Cod sursa(job #1133462)

Utilizator iordache.bogdanIordache Ioan-Bogdan iordache.bogdan Data 4 martie 2014 22:01:37
Problema Curcubeu Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <cstdio>
#include <algorithm>
#include <fstream>

using namespace std;

ifstream f("curcubeu.in");
ofstream g("curcubeu.out");

struct culori {
    int x;
    int y;
    int cul;
} v[1000050];

int d[1000050],vec[1000050];

int tmp,i,j,n;

int main () {
    /*freopen ("curcubeu.in","r",stdin);
    freopen ("curcubeu.out","w",stdout);*/
    f>>n>>v[1].x>>v[1].y>>v[1].cul;
    //scanf ("%d%d%d%d",&n,&v[1].x,&v[1].y,&v[1].cul);
    for (i=2;i<n;i++) {
        v[i].x=int((1LL*v[i-1].x*i)%n);
        v[i].y=int((1LL*v[i-1].y*i)%n);
        v[i].cul=int((1LL*v[i-1].cul*i)%n);
    }
    for(i=1;i<=n;i++)
        d[i]=i;
    for (i=n-1;i>=1;i--) {
        if (v[i].x>v[i].y) {
            tmp=v[i].x;
            v[i].x=v[i].y;
            v[i].y=tmp;
        }
        for (j=v[i].x;j<=v[i].y;j++) {
            if (vec[j]==0) {
                d[j]=v[i].y+1;
                vec[j]=v[i].cul;
            }
            else {
                while (vec[j]!=0)
                    j=d[j];
                if(d[j]<v[i].y)
                    d[j]=v[i].y+1;
                j--;
            }
        }
    }
    for (i=1;i<n;i++)
        //printf("%d\n",vec[i]);
        g<<vec[i]<<"\n";
    return 0;
}