Pagini recente » Cod sursa (job #1081278) | Cod sursa (job #2601159) | Cod sursa (job #3153077) | Cod sursa (job #2147417) | Cod sursa (job #607175)
Cod sursa(job #607175)
#include<fstream>
#include<set>
using namespace std;
const short nmax=5005;
int a[nmax];
short b[nmax],l[nmax],n,k;
set<short> generala;
int main(void){
ifstream fin("secv.in");
ofstream fout("secv.out");
short i,j,poz,q,poz_min,max;
int min;
fin>>n; min=2000000003;
for(i=1;i<=n;++i){ fin>>a[i]; generala.insert(a[i]); if(a[i]<min)min=a[i]; }
k=generala.size();
b[n]=1; l[n]=0;
for(i=1;i<=n;++i)l[i]=i;
for(i=n-1;i>=1;--i){
max=0; q=l[i];
for(j=i+1;j<=n;++j)
if(a[i]<a[j] && max<b[j])
{ max=b[j]; q=l[j]; }
b[i]=max+1; l[i]=q;
}
poz=0;
for(i=n;i>=1;--i)if(b[i]==k && a[i]==min) { poz=i; break; }
if(n==1)fout<<"1";
else{
if(poz==0)fout<<"-1";
else
fout<<l[poz]-poz+1;
}
fout.close();
return 0;
}