Cod sursa(job #1133453)

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

using namespace std;

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

int d[100050],vec[100050];

int tmp,i,j,n;

int main () {
    freopen ("curcubeu.in","r",stdin);
    freopen ("curcubeu.out","w",stdout);
    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]);
    return 0;
}