Cod sursa(job #1377193)

Utilizator vladrochianVlad Rochian vladrochian Data 5 martie 2015 20:40:37
Problema Litere Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
#include <algorithm>
using namespace std;

typedef pair<char, int> Pair;
const int kMaxN = 10005;

ifstream fin("litere.in");
ofstream fout("litere.out");

int n, sol;
Pair v[kMaxN];
int aib[kMaxN];

bool CmpInd(const Pair &a, const Pair &b) {
	return a.second < b.second;
}

void Insert(int pos) {
	for (int i = pos; i <= n; i += i & -i)
		++aib[i];
}

int Query(int pos) {
	int ans = 0;
	for (int i = pos; i > 0; i -= i & -i)
		ans += aib[i];
	return ans;
}

int main() {
	fin >> n;
	for (int i = 1; i <= n; ++i) {
		fin >> v[i].first;
		v[i].second = i;
	}
	sort(v + 1, v + n + 1);
	for (int i = 1; i <= n; ++i)
		v[i].first = v[i - 1].first + 1;
	sort(v + 1, v + n + 1, CmpInd);
	for (int i = n; i; --i) {
		sol += Query(v[i].first);
		Insert(v[i].first);
	}
	fout << sol << "\n";
	return 0;
}