Pagini recente » Cod sursa (job #2940409) | Cod sursa (job #2044756) | Cod sursa (job #123582) | Cod sursa (job #558925) | Cod sursa (job #68235)
Cod sursa(job #68235)
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
#define NMAX 2010
#define uint unsigned int
int N;
int a[NMAX];
pair <int, int> b[NMAX];
int poz[NMAX];
uint din[NMAX][NMAX];
int main()
{
int i, j;
freopen("psir.in", "r", stdin);
freopen("psir.out", "w", stdout);
scanf("%d", &N);
for (i = 1; i <= N; i++) {
scanf("%d", &a[i]);
b[i].first = a[i];
b[i].second = i;
}
sort(b + 1, b + N + 1);
for (i = 1; i <= N; i++)
if (i > 1 && b[i].first == b[i-1].first) poz[ b[i].second ] = poz[ b[i-1].second ];
else poz[ b[i].second ] = i;
int pi, pj;
uint rez = 0;
for (i = 2; i <= N; i++) {
pi = poz[i];
for (j = 1; j < i; j++) {
pj = poz[j];
if (a[j] < a[i]) din[i][pj] += din[j][N] - din[j][pi];
if (a[j] > a[i]) din[i][pj] += din[j][pi - 1];
if (a[j] != a[i]) din[i][pj]++;
else rez++;
}
for (j = 1; j <= N; j++) din[i][j] += din[i][j-1];
printf("%u\n", din[i][N]);
rez += din[i][N];
}
printf("%u\n", rez);
fclose(stdin);
fclose(stdout);
return 0;
}