Pagini recente » Cod sursa (job #2754525) | Cod sursa (job #181656) | Profil EdgeLordXD | Cod sursa (job #163740) | Cod sursa (job #1244554)
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <cmath>
#include <fstream>
#include <cstring>
#include <bitset>
#include <stack>
#include <vector>
#include <map>
#include <set>
#define per pair<int,int>
#define x first
#define y second
#define DN 100013
#define DM 2000
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int v[DN],minn[DN],n,sz;
/// minn[ i ] = cel mai mic terment cu care se poate termina un subsir de lungime i
void solve(){
memset(minn,127,sizeof(minn)); /// INF
minn[0] = 0; /// sa putem continua cu orie sir
f>>n;
for(int i=1;i<=n;++i){
f>>v[i];
for(int j = sz ; j >= 0 ; --j)
if(v[i] > minn[j]){
minn[j+1] = min(minn[j+1],v[i]);
sz = max(sz,j+1);
break;
}
}
g<<sz<<"\n";
for(int i=1;i<=sz;++i)
g<<minn[i]<<" ";
}
int main()
{
solve();
return 0;
}