Pagini recente » Cod sursa (job #1918200) | Cod sursa (job #937968) | Cod sursa (job #1394385) | Cod sursa (job #3248813) | Cod sursa (job #1391918)
#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], ord[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)
maxim = sol[i], poz = i;
else if (sol[i] == maxim && s[i] < minim)
minim = s[i], poz = i;
}
g << maxim << "\n";
while (maxim--)
{
g << poz << " ";
poz = pf[poz];
}
return 0;
}