Cod sursa(job #1131015)

Utilizator dec0o0dinu pinu dec0o0 Data 28 februarie 2014 17:11:57
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int main(){
	ifstream f("secv.in");
	ofstream g("secv.out");
	int n;
	f>>n;
	vector<int> a(n);
	for (int i=0; i<n; i++)
		f>>a[i];

	vector<int> b(a);
	sort(b.begin(), b.end());
	b = vector<int> (b.begin(), unique(b.begin(), b.end()));
	int m, min = 5002;
	m = b.size();

   	
   	for (int i=0; i<n; i++)
   		if (a[i] != b[0])
   			continue;
   		else{
   				bool gasit = true;
   				int j = 0;
   				int current = i;
   				int k;
   				int contor = 0;
   				for (k=0; k<m; k++){
   					j = current;
   					while (j<n){
   						if (a[j] == b[k]){
   							current = j;
   							break;
   						}
   						else
   							j++;
   					}
   					if (j == n && b[k] != a[j])
   						gasit = false;
   				}
   				if (gasit && min > current -i + 1){
   					min = current -i + 1;
   					//printf("i:%d j:%d, k:%d current:%d min:%d\n", i,j,k,current,min);
   				}
   			}
 
   	if (min == 5002)
    	min = -1;

    g << min;
	f.close();
	g.close();
	return 0;
}