Pagini recente » Cod sursa (job #1456568) | Cod sursa (job #1066959) | Cod sursa (job #1189619) | Cod sursa (job #1935544) | Cod sursa (job #1444888)
#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; }