Pagini recente » Cod sursa (job #2727267) | Cod sursa (job #626363) | Cod sursa (job #760900) | Cod sursa (job #1670441) | Cod sursa (job #1391908)
#include <fstream>
#define INF 111111111
using namespace std;
ifstream f("subsir2.in");
ofstream g("subsir2.out");
int a[5001], sol[5001], pf[5001], s[5001];
int n, i, j, minim, poz, maxim;
int main()
{
f >> n;
for (i = 1; i <= n; i++)
f >> a[i];
for (i = n; i >= 1; i--)
{
minim = INF;
for (j = i+1; j <= n; j++)
if (minim > a[j] && a[i] <= a[j])
minim = a[j], poz = j;
if (minim == INF)
sol[i] = 1;
else
sol[i] = sol[poz] + 1, pf[i] = poz, s[i] += s[poz];
}
maxim = sol[1], poz = 1;
for (i = 2; i <= n; i++)
{
if (sol[i] >= maxim && s[i] < minim)
maxim = sol[i], poz = i, minim = s[i];
}
g << maxim << "\n";
while (maxim--)
{
g << poz << " ";
poz = pf[poz];
}
return 0;
}