Pagini recente » Cod sursa (job #1721470) | Cod sursa (job #691725) | Cod sursa (job #3244393) | Cod sursa (job #3224832) | Cod sursa (job #2780185)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("subsir2.in");
ofstream fout("subsir2.out");
#define N 5005
#define INF 1000000000
int n, minn, poz, val, a[N], dp[N], p[N], b[N];
int main() {
fin >> n;
for (int i=1;i<=n;i++){
fin >> a[i];
dp[i] = (1 << 30);
}
for (int i=n;i>=1;--i){
val = (1 << 30);
for (int j=i+1;j<=n;j++){
if (a[i] <= a[j]){
b[j] = 1;
if (a[j] < val){
if (dp[i] >= dp[j] + 1){
dp[i] = dp[j] + 1;
p[i] = j;
}
val = a[j];
}
}
}
if (dp[i] > n)
dp[i] = 1;
}
int rez = 0;
dp[0] = (1 << 30);
for (int i=1;i<=n;i++){
if (b[i] == 0 && (dp[rez] > dp[i] || (dp[rez] == dp[i] && a[rez] > a[i])))
rez = i;
}
fout << dp[rez] << '\n';
for ( ;rez != 0;rez = p[rez])
fout << rez << ' ';
return 0;
}