Pagini recente » Cod sursa (job #170154) | Cod sursa (job #2041458) | Cod sursa (job #2817900) | Cod sursa (job #450266) | Cod sursa (job #2909417)
//Problema scmax - 70p pe infoarena.ro
#include <iostream>
#include <fstream>
#define NR_OF_ELEMENTS 100005
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
void Read(int &n, int a[])
{
int i;
fin >> n;
for(i = 1; i <= n; ++ i)
fin >> a[i];
}
void Solve(int n, int a[])
{
int i, dp[NR_OF_ELEMENTS], t[NR_OF_ELEMENTS], j, sol = 0, pz = 0;
for(i = n - 1; i >= 1 ; -- i)
for(j = i + 1; j < n ; ++ j) //se formeaza toate sumele partiale posibile de la coada la cap
if(a[i] < a[j])
if(dp[i] <= dp[j]) //daca elementul uramtor
{
dp[i] = dp[j] + 1;
t[i] = j;
}
for(i = 1; i <= n; ++ i)
if(sol < dp[i])
{
sol = dp[i];
pz = i;
}
fout << sol + 1 << '\n';
i = pz;
while(i)
{
fout << a[i] << ' ';
i = t[i];
}
fout << '\n';
}
int main()
{
int a[NR_OF_ELEMENTS], n;
Read(n, a);
Solve(n, a);
return 0;
}