Pagini recente » Cod sursa (job #2833921) | Cod sursa (job #162834) | Cod sursa (job #423858) | Cod sursa (job #2764332) | Cod sursa (job #2063197)
#include <bits/stdc++.h>
using namespace std;
ifstream f("subsir2.in");
ofstream g("subsir2.out");
int n,a[5005],l[5005],lmax,nr,w[5005],ok;
bool valid(int i,int j) {
int k;
for (k=i+1;k<=j-1;k++)
if (a[i]<a[k] && a[k]<a[j])
return 0;
return 1;
}
void solve() {
int i,j,k,nrk;
l[n]=1;
for (i=n-1;i>=1;i--) {
k=n+1;
for (j=i+1;j<=n;j++)
if (a[i]<a[j] && l[j]<k && valid(i,j))
k=l[j];
if (k==n+1) k=0;
l[i]=1+k;
}
lmax=n+1;
//for (i=1;i<=n;i++)
// cout<<l[i]<<' ';
for (i=n;i>=1;i--) {
ok=1;
for (j=1;j<=i-1;j++)
if (a[j]<a[i]) ok=0;
if (ok && lmax>l[i]) lmax=l[i];
}
g<<lmax;
}
int main() {
int i,j;
f>>n;
for (i=1;i<=n;i++)
f>>a[i];
solve();
return 0;
}