Pagini recente » Cod sursa (job #2197070) | Cod sursa (job #1650436) | Cod sursa (job #1925186) | Cod sursa (job #2307550) | Cod sursa (job #2063140)
#include <bits/stdc++.h>
using namespace std;
ifstream f("subsir2.in");
ofstream g("subsir2.out");
int n,a[5005],l[5005],ilmax,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;
}
for (i=1;i<=n;i++) {
ok=1;
for (j=i+1;j<=n;j++)
if (a[i]<a[j] && valid(i,j))
if (l[i]<=l[j]) {
ok=0;
break;
}
if (ok && l[ilmax]<l[i]) ilmax=i;
}
g<<l[ilmax];
}
int main() {
int i,j;
f>>n;
for (i=1;i<=n;i++)
f>>a[i];
solve();
return 0;
}