Cod sursa(job #455902)

Utilizator deneoAdrian Craciun deneo Data 14 mai 2010 15:36:43
Problema Secv Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<vector>
#include<fstream.h>
#include<algorithm>
using namespace std;
vector<long> s;
long n;
int next(int poz)
{
	while(s[poz]==s[poz+1] && poz<n-1)
		poz++;
	poz++;
	if(s[poz]==s[poz-1] || poz>n-1)
		return -1;
	return poz;
} // se retine poz intr-un aux apoi verifcam daca e la sf sau merge next
int main()
{
	long i, j, v[5001], poz=0, si, p, da;
	ifstream f("secv.in");
	f>>n;
	for(i=1; i<=n; ++i)
	{
		f>>v[i];
		s.push_back(v[i]);
	}
	sort(s.begin(), s.end());
	for(j=1; j<=n; ++j)
			if(v[j]==s[poz])
			{
				si=j;
				p=j;
				break;
			}
	ofstream g("secv.out");
	while(1)
	{
		da=1;
		poz=next(poz);
		if(poz==-1)
		{
			g<<p-si+1;
			break;
		}
		for(i=p+1; i<=n && da; ++i)
			if(v[i]==s[poz])
			{
				da=0; 
				p=i;
			}
		if(da==1)
		{
			g<<-1;
			break;
		}
	}
	g.close();
	return 0;
}