Cod sursa(job #612505)

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

using namespace std;

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

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] = i - 1;
		
		unsigned int big = 0, small = 0;
		
		for (int j = i - 1; j >= 1; --j)
		{
			if (V[j] < V[i])
				pos[i] += (pos[j] - like[j] + 1u) * big;
			else if (V[j] > V[i])
				pos[i] += (pos[j] - like[j] + 1u) * small;
			
			small += (V[j] < V[i]);
			big += (V[j] > V[i]);
		}
	}
	
	for (int i = 1; i <= N; ++i)
		result += pos[i];
	
	fout << result;
	
	fin.close();
	fout.close();
}