Cod sursa(job #2457934)

Utilizator FunnyStockyMihnea Andreescu FunnyStocky Data 19 septembrie 2019 09:48:57
Problema P-sir Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.26 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++)
                        {
                                for(int j=1;j<=2;j++)
                                {
                                        dp[z][x]+=dp[y][z];
                                        swap(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;
}