Pagini recente » Cod sursa (job #1171153) | Cod sursa (job #3250545) | Cod sursa (job #1942970) | Cod sursa (job #1057773) | Cod sursa (job #2212573)
#include <fstream>
using namespace std;
ifstream cin("scmax.in");
ofstream cout("scmax.out");
int minim[100005],rez[100005],v[100005];
void solve(int poz){
if(poz == 0)
return;
solve(rez[poz]);
cout << v[poz] << " ";
}
int main()
{
int n,m = 0,i,r,pas;
cin >> n;
for(i = 1;i <= n;i++){
cin >> v[i];
}
for(i = 1;i <= n;i++){
r = 0;
pas = 1 << 16;
while(pas){
if(r+pas <= m && v[i] > v[minim[r+pas]]){
r+=pas;
}
pas/=2;
}
if(r == m)
m++;
minim[r+1] = i;
rez[i] = minim[r];
}
cout << m << "\n";
solve(minim[m]);
return 0;
}