Cod sursa(job #1799650)

Utilizator iulianrotaruRotaru Gheorghe-Iulian iulianrotaru Data 6 noiembrie 2016 16:33:02
Problema P-sir Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("psir.in");
ofstream g("psir.out");
int N,i,j;
int main()
{
    f>>N;
    vector<int> v(N),un(N);
    for (i=0;i<N;++i)
        f>>v[i],un[i]=v[i];
    sort(un.begin(),un.end());
    un.resize(unique(un.begin(),un.end())-un.begin());
    int K=un.size();
    for(i=0;i<N;++i)
        v[i]=lower_bound(un.begin(),un.end(),v[i])-un.begin();
    vector<vector<unsigned int> > dp(N,vector<unsigned int>(K,0u));
    unsigned int sol(0u);
    for(i=1;i<N;++i)
    {
        for(j=0;j<i;++j)
        {
            if(v[j]<v[i]) dp[i][v[j]]+=dp[j][K-1]-dp[j][v[i]];
            else if(v[j]>v[i]&&v[i]) dp[i][v[j]]+=dp[j][v[i]-1];
            ++dp[i][v[j]];
        }
        for(j=1;j<K;++j) dp[i][j]+=dp[i][j-1];
        sol+=dp[i][K-1];
    }
    g<<sol;
    return 0;
}