Pagini recente » Cod sursa (job #2930466) | Cod sursa (job #1730044) | Cod sursa (job #636010) | Cod sursa (job #637533) | Cod sursa (job #2496875)
#include <bits/stdc++.h>
using namespace std;
#define newline '\n'
ifstream f("1.in");
ofstream g("1.out");
int numere[100001],numar_de_numere,dp[100001];
void Write(int number_of_numbers, int numbers[]);
void Read()
{
f>>numar_de_numere;
for(int i = 1; i <= numar_de_numere; i++)
f>>numere[i];
}
void Solve_One_Iteration()
{
int i, j, maxim_f_dp, solution[100001], poz_in_solution;
maxim_f_dp = 0;
poz_in_solution = 1;
dp[numar_de_numere] = 1;
for(i = numar_de_numere-1; i >= 1; i--)
{
dp[i] = 1;
for(j = i+1; j <= numar_de_numere; j++)
if(numere[i] < numere[j])
{
if(dp[i] < dp[j]+1)
{
dp[i] = dp[j]+1;
if(dp[i] > maxim_f_dp)
{
if(maxim_f_dp == 0)
solution[ poz_in_solution ++ ] = numere[j];
maxim_f_dp = dp[i];
solution[ poz_in_solution ++ ] = numere[i];
}
}
}
}
for(i=1;i<=numar_de_numere;i++)
cout<<dp[i]<<" ";
Write(maxim_f_dp,solution);
}
void Write(int number_of_numbers, int numbers[])
{
g<<number_of_numbers<<newline;
for(int i = number_of_numbers; i >= 1; i--)
g<<numbers[i]<<" ";
}
/*void Solve()
{
int i,j;
for(i=1;i<=n;i++)
{
dp[i] = 1;
for(j=1;j<=i;j++)
if(v[j]<v[i])
{
if(dp[j]+1 > dp[i])
dp[i] = dp[j]+1;
}
}
int mx = 0;
int poz_sol=1;
vector <int> sol;
for(i=1;i<=n;i++)
{
if(mx<dp[i])
mx = dp[i];
}
for(i=n;i>=1;i--)
if(dp[i]==mx)
{
sol.push_back(v[i]);
mx--;
}
g<<sol.size()<<endl;
for(i=sol.size()-1;i>=0;i--)
g<<sol[i]<<" ";
}*/
int main()
{
Read();
Solve_One_Iteration();
}