Pagini recente » Cod sursa (job #2977820) | Cod sursa (job #953470) | Cod sursa (job #1202946) | Cod sursa (job #219741) | Cod sursa (job #1524103)
#include <fstream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <unordered_map>
#define infile "psir.in"
#define outfile "psir.out"
using namespace std;
unsigned int v[2005], w[2005];
unsigned int partSum[2005][2005];
unordered_map<unsigned int, unsigned int> map;
int main() {
ifstream fin(infile);
ofstream fout(outfile);
int n;
fin >> n;
for (int i = 1; i <= n; ++i) {
fin >> v[i];
w[i] = v[i];
}
sort(w + 1, w + n + 1);
int cnt = 0;
for (int i = 1; i <= n; ++i) {
if (i > 1 && w[i] == w[i - 1])
continue;
++cnt;
map[w[i]] = cnt;
}
for (int i = 1; i <= n; ++i)
v[i] = map[v[i]];
unsigned int sol = 0;
for (int i = 2; i <= n; ++i) {
unsigned int temp = 1;
for (int j = 1; j < i; ++j) {
if (v[i] < v[j]) {
temp += partSum[j][v[i] - 1];
}
else if (v[i] > v[j]) {
temp += partSum[j][cnt] - partSum[j][v[i]];
}
partSum[i][v[j]] += temp;
sol += temp;
}
for (int j = 2; j <= cnt; ++j)
partSum[i][j] += partSum[i][j - 1];
}
fout << sol;
return 0;
}
//Trust me, I'm the Doctor!