Cod sursa(job #1170298)

Utilizator Impaler_009Mihai Nitu Impaler_009 Data 13 aprilie 2014 01:27:45
Problema Curcubeu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>

#define maxn 1000001

using namespace std;

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

int a[maxn],b[maxn],c[maxn],n,l,r;
int v[maxn],rightb[maxn];

int main()
{
    freopen ("curcubeu.out","w",stdout);

    fin>>n;
    --n;

    fin>>a[1]>>b[1]>>c[1];

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

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

        for (int j=l; j<=r;)
        {
            if (!v[j])
            {
                v[j] = c[i];
                rightb[j] = r;
                ++j;
            }
            else
            {
                j = rightb[j]+1;
            }
        }
    }

    for (int i=1; i<=n; ++i)
    {
        printf ("%d\n",v[i]);
    }
}