Cod sursa(job #590475)

Utilizator paul_gabryelPaul Buda paul_gabryel Data 17 mai 2011 18:53:11
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb

#include <cstdio>
#include <fstream>
#include <algorithm>

using namespace std;

#define N 8192

int v[N],b[N];

inline bool c (int i,int j){
	return v[i]<v[j];}

int main ()
{
	
	int n,m=0,k=-1;
	ifstream in ("secv.in");
	freopen ("secv.out","w",stdout);
	in>>n;
	if(n==1){
		printf("1");
		return 0;
		}
	for(int i=1;i<=n;++i){
		in>>v[i];
		b[i]=i;
		}
	sort(b+1,b+n+1,c);
	for(int i=1;i<=n;++i)
		if(v[b[i]]==k)
			v[b[i]]=m;
		else{
			++m;
			k=v[b[i]];
			v[b[i]]=m;
			}
	int r=N;
	for(int i=1;i+m<=n+1;++i)
		if(v[i]==1){
			k=2;
			for(int j=i+1;j<=n&&k<=m;++j){
				if(k==v[j])
					++k;
				if(m+1==k&&j+1<r+i)
					r=j-i+1;
				}
			}
	printf("%d",r==N?-1:r);
	
	return 0;}