Pagini recente » Cod sursa (job #1512513) | Cod sursa (job #1334301) | Cod sursa (job #2444058) | Cod sursa (job #279665) | Cod sursa (job #1465929)
#include <fstream>
#define INF 10000001
using namespace std;
ifstream f("subsir2.in");
ofstream g("subsir2.out");
int n, i, j;
int v[5001], sol[5001], bf[5001];
int minim, s, p;
int main()
{
f >> n;
for (i = 1; i <= n; i++)
f >> v[i];
for (i = n; i >= 1; i--)
{
minim = s = INF;
for (j = i+1; j <= n; j++)
if (v[j] >= v[i] && v[j] < minim)
{
minim = v[j];
if (sol[j] <= s)
s = sol[j], p = j;
}
if (minim == INF)
sol[i] = 1;
else
sol[i] = sol[p]+1, bf[i] = p;
}
minim = s = INF ;
for (i = 1; i <= n; i++)
if (v[i] <= minim)
{
minim = v[i];
if (sol[i] <= s)
s = sol[i], p = i;
}
g << s << "\n" << p << " ";
s--;
while (s)
{
p = bf[p];
g << p << " ";
s--;
}
return 0;
}