Pagini recente » Cod sursa (job #1278057) | Cod sursa (job #1154108) | Cod sursa (job #207209) | Cod sursa (job #2512844) | Cod sursa (job #571803)
Cod sursa(job #571803)
#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;
for(int i=1; i<=n; ++i) {
f>>v[i];
//ind[i]=i;
aux.push_back(v[i]);
}
sort(aux.begin(),aux.end());
aux.erase(unique(aux.begin(),aux.end()),aux.end());
for(int i=1; i<=n; ++i) ind[i]=lower_bound(aux.begin(),aux.end(),v[i])-aux.begin()+1;
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;
}