Pagini recente » Cod sursa (job #3178366) | Cod sursa (job #1054330) | Cod sursa (job #938150) | Cod sursa (job #427196) | Cod sursa (job #571769)
Cod sursa(job #571769)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#define DN 2005
#define ui unsigned int
using namespace std;
ui dp[DN][DN],v[DN],ind[DN],sf[DN],n;
vector<int> aux;
bool cmp(const int &a, const int &b) {
return aux[a]<aux[b];
}
int main()
{
ifstream f("psir.in");
ofstream g("psir.out");
f>>n;
aux.push_back(1<<32);
for(int i=1; i<=n; ++i) {
f>>v[i];
ind[i]=i;
aux.push_back(v[i]);
}
aux.erase(unique(aux.begin(),aux.end()),aux.end());
sort(ind+1,ind+n+1,cmp);
for(int i=1; i<=n; ++i) {
for(int j=1; j<i; ++j) {
++dp[i][ind[j]];
if(ind[i]>ind[j]) dp[i][ind[j]]+=dp[j][n]-dp[j][ind[i]];
else dp[i][ind[j]]+=dp[j][ind[i]-1];
}
for(int j=2; j<=n; ++j) dp[i][j]+=dp[i][j-1];
}
ui rez=0;
for(int i=1; i<=n; ++i) rez+=dp[i][n];
cout<<rez;
g<<rez;
return 0;
}