Pagini recente » Cod sursa (job #2005395) | Cod sursa (job #2748743) | Cod sursa (job #392837) | Cod sursa (job #2565264) | Cod sursa (job #2129157)
#include <cstdio>
#include <algorithm>
using namespace std;
int v[2001],w[2001];
unsigned int d[2001][2001];
int main()
{
FILE *fin=fopen ("psir.in","r");
FILE *fout=fopen ("psir.out","w");
int n,i,elem,j;
unsigned int sol=0;
fscanf (fin,"%d",&n);
for (i=1;i<=n;i++){
fscanf (fin,"%d",&v[i]);
w[i]=v[i];
}
sort (w+1,w+n+1);
// normalizare
elem=0;
for (i=1;i<=n;i++){
if (w[elem]!=w[i])
w[++elem]=w[i];
}
for (i=1;i<=n;i++){
for (j=1;j<=elem;j++){
if (v[i]==w[j]){
v[i]=j;
break;
}
}
}
for (i=2;i<=n;i++){
for (j=i-1;j>0;j--){
if (v[i]==v[j]){
d[i][v[j]]=(d[i][v[j]]+1);
}
else if (v[i]<v[j]){
// caut v[k]<v[i]
d[i][v[j]]=(1+d[i][v[j]]+d[j][v[i]-1]);
}
else {
d[i][v[j]]=(1+d[i][v[j]]+(d[j][elem]-d[j][v[i]]));
}
}
for (j=1;j<=elem;j++){
sol+=d[i][j];
d[i][j]=(d[i][j]+d[i][j-1]);
}
}
fprintf (fout,"%u",sol);
}