Pagini recente » Cod sursa (job #2578986) | Cod sursa (job #940313) | Cod sursa (job #991137) | Cod sursa (job #1498670) | Cod sursa (job #1117476)
#include <fstream>
#define in "subsir2.in"
#define out "subsir2.out"
#define Max_Size 5009
#define oo 1000000
std :: ifstream f(in);
std :: ofstream g(out);
int N, minim, A[Max_Size], DP[Max_Size];
bool Viz[Max_Size];
int main() {
f >> N;
for(int i = 1; i <= N; ++i) f >> A[i];
DP[N] = 1;
for(int i = N - 1; i >= 1; --i) {
minim = DP[i] = oo;
for(int j = i + 1; j <= N; ++j) {
if(A[i] <= A[j] && minim > A[j]) {
minim = A[j];
if(DP[i] > DP[j] + 1) DP[i] = DP[j] + 1;
}
if(A[i] <= A[j]) Viz[j] = 1;
}
}
int minim = oo;
for(int i = 1; i <= N; ++i)
if(minim > DP[i] && !Viz[i]) minim = DP[i];
g << minim << '\n';
g.close();
return 0;
}