Pagini recente » Cod sursa (job #1606681) | Cod sursa (job #3234181) | Cod sursa (job #456408) | Cod sursa (job #640610) | Cod sursa (job #2151281)
#include <fstream>
#include <vector>
using namespace std;
ifstream fi("scmax.in");
ofstream fo("scmax.out");
int A[100001],n,m;
vector <int> V[100001];
int cauta(int val)
{
int st=0,dr=m+1;
while((dr-st)>1)
{
int mid=(st+dr)/2;
if(V[mid][mid-1]<=val)
st=mid;
else dr=mid;
}
return dr;
}
int main()
{
fi>>n;
for(int i=1; i<=n; i++)
{
fi>>A[i];
int poz=cauta(A[i]);
V[poz]=V[poz-1];
V[poz].push_back(A[i]);
if(poz==m+1)
m++;
}
fo<<m<<"\n";
for(int j=0; j<m; j++)
fo<<V[m][j]<<" ";
return 0;
}