Pagini recente » Cod sursa (job #2354731) | Cod sursa (job #565818) | Cod sursa (job #1385684) | Cod sursa (job #1724867) | Cod sursa (job #2714866)
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
#define nrm 100100
long long n,v[nrm],scmax=0;
long long rez[nrm];
int cautarebinara(long long right, long long e, long long rez[])
{
int left=1;
while(left<=right)
{
long long middle=(left+right)/2;
if(e>rez[middle])
{
left=middle+1;
}
else
{
if(e<rez[middle])
{
right=middle-1;
}
else
{
return left;
}
}
}
}
void citire()
{
fin>>n;
for(int i=1;i<=n;i++)
{
fin>>v[i];
if(v[i]>rez[scmax])
{
scmax++;
rez[scmax]=v[i];
//cout<<v[i]<<" "<<endl;
}
else
{
//cout<<v[i]<<" "<<rez[scmax]<<endl;
long long position=cautarebinara(scmax,v[i],rez);
rez[position]=v[i];
}
}
}
void afisare()
{
fout<<scmax<<'\n';
for(int i=1;i<=scmax;i++)
{
fout<<rez[i]<<" ";
}
}
int main ()
{
citire();
afisare();
fin.close();
fout.close();
return 0;
}