Cod sursa(job #2737410)

Utilizator bogdi1bogdan bancuta bogdi1 Data 4 aprilie 2021 18:46:17
Problema P-sir Scor 50
Compilator cpp-32 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <cstdio>
#include <map>
using namespace std;
const long long mod = (1LL<<32);
map<unsigned int, unsigned int> mp;
unsigned int v[2005];
unsigned int sp[2005][2005];
int main()
{   freopen("psir.in", "r", stdin);
    freopen("psir.out", "w", stdout);
    int n,i,nr,j;
    unsigned int aux,sol=0;
    scanf("%d", &n);
    for(i=1; i<=n; i++){
        scanf("%d", &v[i]);
        mp[v[i]];
    }
    map<unsigned int, unsigned int>::iterator it;
    for(i=1, it=mp.begin(); it!=mp.end(); it++,i++)
        it->second=i;
    nr=i-1;
    for(i=1; i<=n; i++)
        v[i]=mp[v[i]];
    for(i=1; i<=n; i++){
        for(j=1; j<i; j++){
            aux=1;
            if(v[i]<v[j])
                aux+=sp[j][v[i]-1];
            else
                if(v[i]>v[j])
                    aux+=sp[j][nr]-sp[j][v[i]];
            sol=(sol+aux)%mod;
            sp[i][v[j]]=(sp[i][v[j]]+aux)%mod;
        }
        for(j=1; j<=nr; j++)
            sp[i][j]=(sp[i][j]+sp[i][j-1])%mod;
    }
    printf("%d\n", sol);
    return 0;
}