Pagini recente » Cod sursa (job #1348167) | Cod sursa (job #2475340) | Cod sursa (job #2419309) | Cod sursa (job #1754637) | Cod sursa (job #2439270)
#include <iostream>
#include<cstdio>
#include<map>
using namespace std;
const int N=2005;
int v[N];
int d[N][N];
map <int,int> m;
const long long MOD=1LL<<32;
int main()
{
FILE*fin,*fout;
fin=fopen("psir.in","r");
fout=fopen("psir.out","w");
int n;
fscanf(fin,"%d",&n);
for(int i=1;i<=n;i++){
fscanf(fin,"%d",&v[i]);
m[v[i]]=1;
}
int id=0;
for(auto &i:m){
i.second=++id;
}
for(int i=1;i<=n;i++){
v[i]=m[v[i]];
}
long long rasp=0;
for(int i=2;i<=n;i++){
for(int j=1;j<i;j++){
if(v[i]>v[j]){
rasp+=(d[j][id]-d[j][v[i]]+1+MOD)%MOD;
rasp%=MOD;
d[i][v[j]]+=(d[j][id]-d[j][v[i]]+1+MOD)%MOD;
d[i][v[j]]%=MOD;
}
else if(v[i]<v[j]){
rasp+=(d[j][v[i]-1]+1+MOD)%MOD;
rasp%=MOD;
d[i][v[j]]+=(d[j][v[i]-1]+1+MOD)%MOD;
d[i][v[j]]%=MOD;
}
else{
rasp++;
rasp%=MOD;
d[i][v[j]]++;
d[i][v[j]]%=MOD;
}
}
for(int j=1;j<=id;j++){
d[i][j]+=d[i][j-1];
d[i][j]%=MOD;
}
}
fprintf(fout,"%lld",rasp);
return 0;
}