Pagini recente » Cod sursa (job #738702) | Cod sursa (job #1855857) | Cod sursa (job #2047446) | Cod sursa (job #2862098) | Cod sursa (job #1854164)
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int v[5005],v2[5005],vc[5005],cont[5005],bin[5005],n,j,ordmin[5005];
ifstream in("secv.in");
ofstream out("secv.out");
int bs(int k){
int l,r,med=1;
l=0;
r=j;
while(l<=r && vc[med]!=k){
med=(r+l)/2;
if(vc[med]<k)
l=med+1;
else
if(vc[med]>k)
r=med-1;
}
if(vc[med]==k)
return med;
else
return -1;
}
int main()
{
int aux,lc=0,u=1,lmin=INT_MAX,nrd=0;
cin>>n;
for(int i=1;i<=n;i++)
cin>>v[i],v2[i]=v[i];
sort(v2+1,v2+n+1);
for(int i=1;i<=n;i++)
if(v2[i]>v2[i-1])
vc[j++]=v2[i];
for(int i=1;i<=n;i++){
int poz;
bin[i]=bs(v[i]);
}
for(int i=1;i<=n;i++){
int poz;
poz=bin[i];
cont[poz]++;
if(cont[poz]==1)
nrd++;
if(ordmin[poz]==0)
ordmin[poz]=i;
lc++;
if(nrd==j){
for(int k=1;k<=j;k++)
if(ordmin[k]<ordmin[k-1]){
if(v[u]==k)
cont[bin[u++]]--,lc--;
}
if(lc<lmin)
lmin=lc;
}
}
cout<<lmin;
return 0;
}