Pagini recente » Cod sursa (job #682421) | Cod sursa (job #3199784) | Cod sursa (job #1890617) | Cod sursa (job #87616) | Cod sursa (job #2440563)
#include <fstream>
#include <map>
using namespace std;
ifstream fin ("psir.in");
ofstream fout ("psir.out");
typedef unsigned int u32;
const int nmax = 2000;
u32 s[nmax + 1][nmax + 1];
int n;
int v[nmax + 1];
map< int, int > mp;
void citire_si_norm () {
fin >> n;
for (int i = 1; i <= n; ++ i) {
fin >> v[i];
mp[v[i]] = 1;
}
int ind = 0;
for (auto &i : mp) {
i.second = ++ ind;
}
for (int i = 1; i <= n; ++ i) {
v[i] = mp[v[i]];
}
}
int main () {
citire_si_norm ();
u32 ans = 0;
for (int i = 1; i <= n; ++ i) {
for (int j = 1; j < i; ++ j) {
u32 d = 1;
if (v[i] > v[j]) {
d += s[j][n] - s[j][v[i]];
} else if (v[i] < v[j]) {
d += s[j][v[i] - 1];
}
s[i][v[j]] += d;
}
for (int j = 1; j <= n; ++ j) {
s[i][j] += s[i][j - 1];
}
ans += s[i][n];
}
fout << ans << "\n";
fin.close();
fout.close();
return 0;
}