Cod sursa(job #612500)

Utilizator darrenRares Buhai darren Data 8 septembrie 2011 12:29:35
Problema P-sir Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <fstream>

using namespace std;

int N;
int V[2002], like[2002];
unsigned int pos[2002];

int main()
{
	ifstream fin("psir.in");
	ofstream fout("psir.out");
	
	fin >> N;
	for (int i = 1; i <= N; ++i)
	{
		fin >> V[i];
		
		for (int j = i - 1; j >= 1; --j)
			like[i] += (V[i] == V[j]);
	
		pos[i] = pos[i - 1] + i - 1;
		
		int big = 0, small = 0;
		
		for (int j = i - 1; j >= 1; --j)
		{
			if (V[j] < V[i])
				pos[i] += (pos[j] - like[j] + 1) * big;
			else if (V[j] > V[i])
				pos[i] += (pos[j] - like[j] + 1) * small;
			
			small += (V[j] < V[i]);
			big += (V[j] > V[i]);
		}
	}
	
	fout << pos[N];
	
	fin.close();
	fout.close();
}