Pagini recente » Cod sursa (job #2929501) | Cod sursa (job #2769132) | Cod sursa (job #2915131) | Cod sursa (job #1798789) | Cod sursa (job #2737410)
#include <cstdio>
#include <map>
using namespace std;
const long long mod = (1LL<<32);
map<unsigned int, unsigned int> mp;
unsigned int v[2005];
unsigned int sp[2005][2005];
int main()
{ freopen("psir.in", "r", stdin);
freopen("psir.out", "w", stdout);
int n,i,nr,j;
unsigned int aux,sol=0;
scanf("%d", &n);
for(i=1; i<=n; i++){
scanf("%d", &v[i]);
mp[v[i]];
}
map<unsigned int, unsigned int>::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+=sp[j][v[i]-1];
else
if(v[i]>v[j])
aux+=sp[j][nr]-sp[j][v[i]];
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("%d\n", sol);
return 0;
}