Pagini recente » Cod sursa (job #1345378) | Cod sursa (job #754794) | Cod sursa (job #3254157) | Cod sursa (job #527492) | Cod sursa (job #2737417)
#include <cstdio>
#include <map>
using namespace std;
const long long mod = (1LL<<32);
map<long long, long long> mp;
long long v[2005];
long long sp[2005][2005];
int main()
{ freopen("psir.in", "r", stdin);
freopen("psir.out", "w", stdout);
int n,i,nr,j;
long long aux,sol=0;
scanf("%d", &n);
for(i=1; i<=n; i++){
scanf("%lld", &v[i]);
mp[v[i]];
}
map<long long, long long>::iterator it;
for(i=1, it=mp.begin(); it!=mp.end(); it++,i++)
it->second=i;
nr=i-1;
for(i=1; i<=n; i++)
v[i]=mp[v[i]];
for(i=1; i<=n; i++){
for(j=1; j<i; j++){
aux=1;
if(v[i]<v[j])
aux=(aux+sp[j][v[i]-1])%mod;
else
if(v[i]>v[j])
aux=(aux+sp[j][nr]-sp[j][v[i]])%mod;
sol=(sol+aux)%mod;
sp[i][v[j]]=(sp[i][v[j]]+aux)%mod;
}
for(j=1; j<=nr; j++)
sp[i][j]=(sp[i][j]+sp[i][j-1])%mod;
}
printf("%lld\n", sol);
return 0;
}