Pagini recente » Cod sursa (job #581872) | Cod sursa (job #225300) | Cod sursa (job #3259753) | Cod sursa (job #1852601) | Cod sursa (job #463593)
Cod sursa(job #463593)
#include<fstream>
using namespace std;
unsigned int h[2010],b[2010],a[2010],m[2010][2010],temp[2010],sum[2010],res;
int cmp(int i, int j)
{
return a[i]<a[j];
}
int main()
{
int i,j,n,nr=0,t,u;
ifstream read ("psir.in");
ofstream write ("psir.out");
read>>n;
for(i=1;i<=n;++i)
{
read>>a[i];
h[i]=i;
}
sort(h+1,h+n+1,cmp);
i=1;
while(i<=n)
{
++nr;
j=i;
while(a[h[i]]==a[h[i+1]])
++i;
for(int t=j;t<=i;++t)
b[h[t]]=nr;
++i;
}
for(i=2;i<=n;++i)
{
for(j=1;j<=n;++j)
temp[j]=0;
for(j=1;j<i;++j)
{
if(a[j]>a[i])
temp[j]=m[j][b[i]-1];
else
if(b[j]<b[i])
temp[j]=sum[j]-m[j][b[i]];
++temp[j];
sum[i]+=temp[j];
}
t=1;
for(j=i+1;j<=n;++j)
{
m[i][j]=m[i][j-1];
while(t<=n&&b[h[t]]==j)
{
if(h[t]<i)
m[i][j]+=temp[h[t]];
++t;
}
}
res+=sum[i];
}
write<<res<<'\n';
return 0;
}