Cod sursa(job #1444888)

Utilizator tamionvTamio Vesa Nakajima tamionv Data 30 mai 2015 10:34:25
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#include <limits>
#include <vector>
#include <algorithm>
using namespace std;

void citeste_date(vector<int>& v, vector<int>& el){
	ifstream f("secv.in");
	int n = 0;
	f >> n;
	v.resize(n);
	for(auto& x : v){
		f >> x; }
	el = v;
	sort(begin(el), end(el));
	el.erase(unique(begin(el), end(el)), end(el)); }

int main(){
	ofstream g("secv.out");
	vector<int> v, el;
	citeste_date(v, el);
	if(v.size() <= 1){
		g << v.size() << '\n'; }
	else{
		vector<int> inceputuri(el.size(), -v.size());
		int rez = v.size()+1;
		for(int i = 0; i < v.size(); ++i){
			const int al_catelea = distance(begin(el), lower_bound(begin(el), end(el), v[i]));
			if(al_catelea == 0){
				inceputuri[0] = i; }
			else{
				inceputuri[al_catelea] = max(inceputuri[al_catelea], inceputuri[al_catelea-1]); }
			if(al_catelea == el.size()-1){
				rez = min(rez, i-inceputuri[al_catelea]+1); } }
		g << (rez < v.size() ? rez : -1) << '\n'; }
	return 0; }