Pagini recente » Cod sursa (job #2703926) | Cod sursa (job #2138824) | Cod sursa (job #1143046) | Cod sursa (job #1827946) | Cod sursa (job #2042652)
#include <bits/stdc++.h>
using namespace std;
ifstream in("psir.in");
ofstream out("psir.out");
const int DIM = 2005;
vector<unsigned> aux;
unsigned arr[DIM], dp[DIM][DIM], ans;
int main(void)
{
int n;
in >> n;
for (int i = 1; i <= n; ++i) {
in >> arr[i];
aux.push_back(arr[i]);
}
sort(aux.begin(), aux.end());
aux.resize(unique(aux.begin(), aux.end()) - aux.begin());
int m = (int) aux.size();
for (int i = 1; i <= n; ++i) {
arr[i] = (int) (lower_bound(aux.begin(), aux.end(), arr[i]) - aux.begin() + 1);
for (int j = i - 1; j >= 1; --j) {
++dp[i][arr[j]];
if (arr[i] == arr[j])
continue;
if (arr[i] > arr[j])
dp[i][arr[j]] += dp[j][m] - dp[j][arr[i]];
else
dp[i][arr[j]] += dp[j][arr[i] - 1];
}
for (int j = 1; j <= m; ++j)
dp[i][j] += dp[i][j - 1];
ans += dp[i][m];
}
out << ans << endl;
return 0;
}