Cod sursa(job #2651452)

Utilizator Stefan_PiscuPiscu Stefan Constantin Stefan_Piscu Data 22 septembrie 2020 17:44:06
Problema Curcubeu Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <bits/stdc++.h>
using namespace std;

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

int n, a[1000005], b[1000005], c[1000005], nex[1000005];
int sol[1000005];

int getnext(int j){
  if(sol[j]) return j;
  return nex[j]=getnext(nex[j]);
}

int main()
{
  fin>>n>>a[1]>>b[1]>>c[1];
  if(a[1]>b[1]) swap(a[1], b[1]);
  for(int 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;
    if(a[i]>b[i]) swap(a[i], b[i]);
  }
  for(int i=n-1;i>=1;--i){
    for(int j=a[i];j<=b[i];){
      if(sol[j]==0){
        sol[j]=c[i];
        nex[j]=b[i]+1;
        j++;
      }
      else j=getnext(j);
    }
  }
  for(int i=1;i<n;i++) fout<<sol[i]<<"\n";
  return 0;
}