Cod sursa(job #2042753)

Utilizator circeanubogdanCirceanu Bogdan circeanubogdan Data 19 octombrie 2017 00:04:07
Problema P-sir Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>
#include <algorithm>
#define DIM 2002

using namespace std;

ifstream f("psir.in");
ofstream g("psir.out");

int n;
unsigned int d[DIM][DIM], u[DIM], s, val, cnt;

pair<unsigned int, unsigned int> v[DIM];

int main(){

    f>>n;
    for(int i = 1; i <= n; ++ i){
        f>>v[i].first;
        v[i].second = i;
    }
    sort(v + 1, v + n + 1);
    for(int i = 1; i <= n; ++ i){
        if(v[i].first != v[i - 1].first)
            u[v[i].second] = ++ cnt;
        else
            u[v[i].second] = cnt;
    }

    for(int i = 1; i <= n; ++ i){
        for(int j = 1; j < i; ++ j){
            ++d[i][u[j]];
            if(u[j] < u[i])
                d[i][u[j]] += d[j][n] - d[j][u[i]];
            if(u[j] > u[i])
                d[i][u[j]] += d[j][u[i] - 1];
        }
        for(int j = 1; j <= n; ++ j)
            d[i][j] += d[i][j - 1];
    }
    for(int i = 1; i <= n; ++ i)
        s += d[i][n];
    g<<s;
    return 0;
}