Cod sursa(job #87380)

Utilizator C_OvidiuCotletz Ovidiu C_Ovidiu Data 27 septembrie 2007 08:51:10
Problema Curcubeu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<stdio.h>
#define nmax 4000000
long v[nmax],n,a,b,c;
long min(long a,long b) {return (a<b)?a:b;}
long max(long a,long b) {return (a>b)?a:b;}

void add(long nod,long st,long dr,long a ,long b,long val)
{long mij;
 mij=(st+dr)/2;
 if(st>=a&&dr<=b)
   {v[nod]=val;
    return;}
 if(b<st||a>dr) return;

 add(nod*2,st,mij,a,b,val);
 add(nod*2+1,mij+1,dr,a,b,val);

 }
long qst(long nod,long st,long dr,long val)
 {long mij;
  if(st==dr&&st==val)
     return v[nod];
  mij=(st+dr)/2;
  if(val<=mij&&val>=st)  return qst(nod*2,st,mij,val);
  else if(val>=mij&&val<=dr)  return qst(nod*2+1,mij+1,dr,val);
  }








int main()
{long i;
 freopen("curcubeu.in","r",stdin);
 scanf("%ld%ld%ld%ld",&n,&a,&b,&c);
 for(i=1;i<n;i++)
   {
    add(1,1,n-1,min(a,b),min(b,a),c);
    a=(a*(i+1))%n;
    b=(b*(i+1))%n;
    c=(c*(i+1))%n;
    }
 freopen("curcubeu.out","w",stdout);
 for(i=1;i<n;i++)
  printf("%ld\n",qst(1,1,n-1,i));
 fclose(stdout);
 return 0;


 }