Cod sursa(job #784590)

Utilizator marinMari n marin Data 6 septembrie 2012 14:12:57
Problema Secv Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
#include <algorithm>

#define DIM 5010
using namespace std;

struct punct {
	int v;
	int p;
};

int cmpv(punct a, punct b) {
	return a.v<b.v;
}

int cmpp(punct a, punct b) {
	return a.p<b.p;
}

int N, i, nv, vc, minim, maxv, j;
punct V[DIM];

int main() {
	
	ifstream f("secv.in");
	ofstream g("secv.out");
	f>>N;
	for (i=1;i<=N;i++) {
		f>>V[i].v;
		V[i].p = i;
	}
	
	sort(V+1, V+N+1, cmpv);
	
	nv = 1;
	vc = V[1].v;
	
	V[1].v = nv;
	for (i=2;i<=N+1;i++)
		if (V[i].v == vc)
			V[i].v = nv;
		else {
			vc = V[i].v;
			nv++;
			V[i].v = nv;
		}
	maxv = nv-1;
	sort(V+1, V+N+1, cmpp);
	
	minim = N+2;
	
	for (i=1;i<=N;i++) {
		if (V[i].v == 1) {
			nv = 2;
			for (j=i+1;j<=N;j++)
				if(V[j].v == nv) {
					nv++;
					if (nv == maxv+1) {
						if (j-i+1 < minim)
							minim = j-i+1;
					}
				}
		}
	}
	
	if (minim == N+2)
		g<<-1;
	else
		g<<minim;
	return 0;
}