Pagini recente » Cod sursa (job #1393354) | Cod sursa (job #2327886) | Cod sursa (job #904202) | Cod sursa (job #2315611) | Cod sursa (job #927465)
Cod sursa(job #927465)
#include <iostream>
#include <fstream>
using namespace std;
int N, sol, start;
int A[1010], dp[1010], sl[1010], pz[1010];
int main()
{
ifstream fin("subsir2.in");
fin >> N;
for (int i = 1; i <= N; i++)
fin >> A[i];
for (int i = N; i >= 1; i--)
{
dp[i] = 1;
for (int j = i + 1; j <= N; j++)
dp[i] = max(dp[i], (A[i] <= A[j]) * (dp[j] + 1));
sol = max(sol, dp[i]);
}
for (int i = 1; i <= N; i++) sl[i] = 0x3f3f3f3f;
ofstream fout("subsir2.out");
fout << sol << '\n'; int ds = sol;
for (int i = 1; i <= N; i++)
{
if (dp[i] >= sol)
if (sl[dp[i]] > A[i])
{
sl[dp[i]] = A[i];
pz[dp[i]] = i;
sol = dp[i] - 1;
}
}
for (int i = ds; i >= 1; i--)
fout << pz[i] << ' ';
fout.close();
return 0;
}