Cod sursa(job #2457935)

Utilizator FunnyStockyMihnea Andreescu FunnyStocky Data 19 septembrie 2019 09:50:21
Problema P-sir Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <iostream>
#include <cstdio>
#include <map>
#include <set>

using namespace std;

const int N=2000+7;
int n,a[N];
map <int,int> t;
set <int> s;
unsigned int dp[N][N];

int main()
{
        freopen("psir.in","r",stdin);
        freopen("psir.out","w",stdout);

        cin>>n;
        for(int i=1;i<=n;i++)
        {
                cin>>a[i];
                s.insert(a[i]);
        }

        int cur=0;
        for(auto &x : s)
                t[x]=++cur;

        for(int i=1;i<=n;i++)
                a[i]=t[a[i]];

        for(int i=1;i<=n;i++)
        {
                for(int j=1;j<i;j++)
                        dp[a[j]][a[i]]++;
                int x=a[i];

                for(int y=1;y<x;y++)
                        for(int z=x+1;z<=cur;z++)
                        {
                                dp[z][x]+=dp[y][z];
                                dp[y][x]+=dp[z][y];
                        }
        }

        int sum=0;
        for(int i=1;i<=cur;i++)
                for(int j=1;j<=cur;j++)
                        sum+=dp[i][j];
        cout<<sum<<"\n";

        return 0;
}