Cod sursa(job #1173399)

Utilizator nimicLeoveanu Mihaita Alexandru nimic Data 19 aprilie 2014 16:12:24
Problema Secv Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream in("secv.in");
ofstream out("secv.out");

const int nmax=100006;
int n, m, a[nmax], b[nmax], r[10*nmax], d[nmax], rasp = 100000000, aux[nmax];

int main(){
	int player_unu=0;

	in>>n;
	for(int i = 1; i<=n; i++)
	{	
		in>>a[i];
		aux[i] = a[i];
	}

	sort(aux+1, aux+1+n);

	for(int i = 1; i<=n; i++)
	{
		if(aux[i]!=aux[i-1])
		{
			m++;
			b[m] = aux[i];
		}
	}

	for(int i = 1; i<=m; i++)
	{
		r[b[i]] = i;
	}

	for(int i = 1; i<=n; i++)
	{
		if(r[a[i]]!=0)
		{
			if(r[a[i]]==1)
				d[1] = i;
			else
			{
				if(d[r[a[i]]-1]!=0)
					d[r[a[i]]] = d[r[a[i]]-1];
			}

			if(d[m]!=0 && rasp>i-d[m]+1)
				rasp = i - d[m]+1;
		}
	}

	if(rasp==100000000)
	{
		out<<-1<<'\n';
		return player_unu;
	}
	out<<rasp<<'\n';
	return player_unu;
}