Cod sursa(job #1528830)

Utilizator TarabanDragosTaraban Dragos-Petru TarabanDragos Data 20 noiembrie 2015 09:17:31
Problema P-sir Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<cstdio>
#include<algorithm>
using namespace std;
#define MOD 4294967296
struct ps{
   long long x;
   long long a;
   long long p;
}v[2010];
long long n,i,j,nr,a,s,x[2010][2010];
FILE *f,*g;
int cmp(ps a, ps b){
   return a.x<b.x;
}
int cmpp(ps a,ps b){
   return a.p<b.p;
}
int main(){
   f=fopen("psir.in","r");
   g=fopen("psir.out","w");
   fscanf(f,"%lld",&n);
   for(i=1;i<=n;i++){
      fscanf(f,"%lld",&v[i].x);
      v[i].p=i;
   }
   sort(v+1,v+n+1,cmp);
   for(i=1;i<=n;i++){
      if(v[i].x>v[i-1].x)
         nr++;
      v[i-1].a=nr-1;
   }
   v[n].a=nr;
   sort(v+1,v+n+1,cmpp);
   for(i=1;i<=n;i++){
      for(j=1;j<i+1;j++){
         if(v[j].a<v[i].a)
            a=(x[j][nr]-x[j][ v[i].a ])%MOD;
         else if(v[j].a>v[i].a)
            a=(x[j][ v[i].a - 1 ])%MOD;
         x[i][ v[j].a ]=a+1;
         s=(s+a+1)%MOD;
      }
      for(j=1;j<=nr;j++){
         x[i][j]=(x[i][j]+x[i][j-1])%MOD;
      }
   }
   fprintf(g,"%lld",s);



   fclose(f);
   fclose(g);
   return 0;
}