Pagini recente » Cod sursa (job #3125795) | Cod sursa (job #1014708) | Cod sursa (job #2234144) | Cod sursa (job #2632150) | Cod sursa (job #1517940)
#include <fstream>
#include <iostream>
using namespace std ;
const int NMAX = 100010 ;
const int INF = 2000000009;
ifstream fin("scmax.in") ;
ofstream fout("scmax.out") ;
int N, V[NMAX], prim, l[NMAX], poz[NMAX], m, Min[NMAX], act[NMAX];
void afisare(int actual)
{
if(actual != 0)
{
afisare(poz[actual]) ;
fout << V[actual] << ' ' ;
}
}
int main()
{
fin >> N ;
for(int i = 1 ; i <= N ; ++ i)
fin >> V[i] ;
for(int i = 1 ; i <= N ; i ++ )
{
Min[i] = INF ;
l[i] = m ;
while(Min[l[i]] >= V[i] && l[i] > 0 ) l[i] -- ;
poz[i] = act[l[i]] ;
l[i] ++ ;
if(l[i] > m)
{
m = l[i] ;
prim = i ;
cout << m ;
}
if(V[i] < Min[l[i]])
{
Min[l[i]] = V[i] ;
act[l[i]] = i ;
}
}
fout << m << '\n' ;
afisare(prim) ;
fout << '\n' ;
fin.close() ;
fout.close() ;
return 0 ;
}