Cod sursa(job #294379)

Utilizator Omega91Nicodei Eduard Omega91 Data 2 aprilie 2009 14:57:25
Problema Secv Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdio>
#include <algorithm>
const int NMAX = 5001;

int main()
{
	int  unic[NMAX], sir[NMAX], sir2[NMAX];
	short N, i, k = 0, sz, left, right;
	freopen("secv.in", "r", stdin);
	freopen("secv.out", "w", stdout);
	
	scanf("%hd", &N);
	
	if (!N) { printf("0\n"); return 0; }
	
	for (i = 0; i != N; ++i) {
		scanf("%d ", sir + i);
		sir2[i] = sir[i];
	}
	std::sort(sir2, sir2 + N);
	
	k = 0; unic[k++] = sir2[0];
	
	--N;
	for (i = 0; i != N; ++i)
		if (sir2[i] != sir2[i + 1]) {
			unic[k++] = sir2[i + 1];
		}
	++N;
	
	sz = k;
	for (i = k = 0; i != N && k < sz; ++i)
		if (sir[i] == unic[k]) {
			if (!(k++)) left = i;
			right = i;
		}
	if (k != sz) { printf("-1\n"); return 0; }
	for (i = right, --k; i > left; --i) {
		if (sir[i] == unic[k]) 
			if (!(k--)) break;
	}
	left = i;
	printf("%d\n", right - left + 1);
		
	return 0;
}