Pagini recente » Cod sursa (job #525950) | Cod sursa (job #895360) | Cod sursa (job #1322443) | Cod sursa (job #1083760) | Cod sursa (job #2414328)
#include <bits/stdc++.h>
#define N 100005
using namespace std;
ifstream fin("scmax.in") ;
ofstream fout("scmax.out") ;
vector<pair<int,int> > graf[N] ;
int t[N] ;
int main()
{
int n , i , j , mx ;
fin >> n ;
for ( i = 1 ; i <= n ; i++ )
fin >> t[i] ;
t[0] = 0 ;
graf[0].push_back(make_pair(0,0)) ;
graf[1].push_back(make_pair(t[1],1)) ;
mx = 1 ;
for ( i = 2 ; i <= n ; i++ )
{
for ( j = mx ; j >= 0 ; j-- )
{
if ( graf[j][0].first < t[i] && graf[j][0].second < i )
{
graf[j+1].push_back(make_pair(t[i],i)) ;
if ( j == mx )
mx++ ;
if ( graf[j+1][0].first > t[i] )
swap(graf[j+1][0],graf[j+1][graf[j+1].size()-1]) ;
break ;
}
}
}
fout << mx << '\n' ;
for ( i = 1 ; i <= mx ; i++ )
fout << graf[i][0].first << " " ;
}