Pagini recente » Cod sursa (job #2756857) | Cod sursa (job #2009787) | Cod sursa (job #529846) | Cod sursa (job #1224831) | Cod sursa (job #1557244)
#include <iostream>
#include <fstream>
using namespace std;
const int Nmax = 100005;
int N, v[Nmax];
int pos[Nmax], T[Nmax];
void read()
{
ifstream f("scmax.in");
f >> N;
for(int i = 1; i <= N; i ++)
{
f >> v[i];
}
f.close();
}
void solve()
{
pos[N] = 1;
T[N] = 0;
for(int i = N-1; i >= 1; i --)
{
for(int j = i+1; j <= N; j ++)
{
if(v[i] < v[j] && pos[j] >= pos[i])
{
pos[i] = pos[j] + 1;
T[i] = j;
}
}
}
}
void print()
{
ofstream g("scmax.out");
int Max = -1, iMax;
for(int i = 1; i <= N; i ++)
{
cout << pos[i] << " ";
if(pos[i] > Max)
{
Max = pos[i];
iMax = i;
}
}
g << Max << "\n";
while(iMax != 0)
{
g << v[iMax] << " ";
iMax = T[iMax];
}
g.close();
}
int main()
{
read();
solve();
print();
return 0;
}