Cod sursa(job #1742556)

Utilizator fanache99Constantin-Buliga Stefan fanache99 Data 16 august 2016 16:51:06
Problema P-sir Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <fstream>
#include <algorithm>
#include <unordered_map>
using namespace std;

ifstream cin("psir.in");
ofstream cout("psir.out");

const int MAXN = 2000;

unsigned int v[1 + MAXN], sorted[1 + MAXN];
unsigned int sum[1 + MAXN][1 + MAXN];
unordered_map<unsigned int, unsigned int> Map;

int main() {
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> v[i];
        sorted[i] = v[i];
    }
    sort(sorted + 1, sorted + n + 1);
    int distinct = 0;
    for (int i = 1; i <= n; i++) {
        if (i > 1 && sorted[i] == sorted[i - 1])
            continue;
        distinct++;
        Map[sorted[i]] = distinct;
    }
    for (int i = 1; i <= n; i++)
        v[i] = Map[v[i]];
    unsigned int answer = 0;
    for (int i = 2; i <= n; i++) {
        for (int j = 1; j < i; j++) {
            unsigned int add;
            if (v[i] < v[j])
                add = 1 + sum[j][v[i] - 1];
            if (v[i] > v[j])
                add = 1 + sum[j][distinct] - sum[j][v[i]];
            if (v[i] == v[j])
                add = 1;
            sum[i][v[j]] += add;
            answer += add;
        }
        for (int j = 2; j <= distinct; j++)
            sum[i][j] += sum[i][j - 1];
    }
    cout << answer;
    return 0;
}