Cod sursa(job #463792)

Utilizator GotenAmza Catalin Goten Data 17 iunie 2010 15:15:37
Problema Secv Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<fstream>
#define max_n 5010
using namespace std;
int a[max_n],b[max_n],h[max_n];
int cmp(int i, int j)
{
	return a[i]<a[j];
}
int main()
{
	int i,j,nr=0,n,end,unsub;
	ifstream read ("secv.in");
	ofstream write ("secv.out");
	read>>n;
	for(i=1;i<=n;++i)
	{
		read>>a[i];
		h[i]=i;
	}
	sort(h+1,h+n+1,cmp);
	i=1;
	while(i<=n)
	{
		++nr;
		j=i;
		while(a[h[i]]==a[h[i+1]])
			++i;
		for(int t=j;t<=i;++t)
			b[h[t]]=nr;
		++i;
	}
	i=n;
	unsub=nr;
	while(i&&unsub)
	{
		if(b[i]==unsub)
		{
			if(unsub==nr)
				end=i;
			--unsub;
		}
		--i;
	}
	if(!i)
		write<<"-1\n";
	else
		write<<end-i<<'\n';
	return 0;
}