Pagini recente » Cod sursa (job #3239296) | Cod sursa (job #2737060) | Cod sursa (job #3217693) | Cod sursa (job #2891251) | Cod sursa (job #3241866)
#include <fstream>
#include <vector>
#include <map>
#include <algorithm>
#include <cassert>
#define ll long long
using namespace std;
const int NMAX = 5000;
int d[NMAX + 1];
int v[NMAX + 1];
int urm[NMAX + 1];
ifstream cin("subsir2.in");
ofstream cout("subsir2.out");
signed main()
{
int n, i, j;
cin >> n;
for (i = 1; i <= n; i++)
cin >> v[i];
for (i = n; i >= 1; i--)
{
int mn = n + 3;
int lol = 1e7;
if (i == 1)
cout << "";
for (j = i + 1; j <= n; j++)
if (v[i] <= v[j] and v[j] < lol)
{
if (mn >= d[j] + 1)
{
mn = d[j] + 1;
if (urm[i] == 0 or (v[urm[i]] > v[j]))
{
urm[i] = j;
}
}
lol = v[j];
}
if (mn == n + 3)
mn = 1;
d[i] = mn;
}
int lol = 1e7;
int unde = -1;
int ans = n + 3;
for (i = 1; i <= n; i++)
if (v[i] < lol)
{
lol = v[i];
if (ans >= d[i])
{
ans = d[i];
if (unde == -1 or (v[unde] > v[i]))
unde = i;
}
}
cout << ans << "\n";
for (i = unde; i; i = urm[i])
cout << i << " ";
}