Pagini recente » Cod sursa (job #2965836) | Cod sursa (job #982709) | Cod sursa (job #557764) | Cod sursa (job #1733732) | Cod sursa (job #1947299)
#include <bits/stdc++.h>
#define maxN 2004
using namespace std;
map<int,int> Map;
int n,i,j,curr,v[maxN],a[maxN];
unsigned int sol,dp[maxN][maxN];
int main()
{
freopen("psir.in","r",stdin);
freopen("psir.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&v[i]);
a[i]=v[i];
}
sort(a+1,a+n+1);
for(i=1;i<=n;i++)
{
if(i>1 && a[i]==a[i-1])
continue;
Map[a[i]]=++curr;
}
for(i=1;i<=n;i++)
v[i]=Map[v[i]];
for(i=2;i<=n;i++)
{
for(j=1;j<i;j++)
{
unsigned int curr_val=1;
if(v[j]<v[i])
curr_val+=dp[j][v[i]-1];
else if(v[j]>v[i])
curr_val+=dp[j][curr]-dp[j][v[i]];
dp[i][v[j]]+=curr_val;
sol+=curr_val;
}
for(j=2;j<=curr;j++)
dp[i][j]+=dp[i][j-1];
}
printf("%u",sol);
return 0;
}