Pagini recente » Cod sursa (job #1900877) | Cod sursa (job #37686) | Cod sursa (job #872242) | Cod sursa (job #1027604) | Cod sursa (job #484352)
Cod sursa(job #484352)
#include<fstream>
#define M 5004
using namespace std;
ifstream f("subsir2.in");
ofstream g("subsir2.out");
int n,m,v[M],l[M],poz[M];
int main()
{
f>>n;
int i,x,y,mij,k;
m=0;
for(i=1;i<=n;++i)
{
f>>v[i];
x=1;
y=m;
k=0;
while(x<=y)
{
mij=(x+y)/2;
if(l[mij]>v[i]) {y=mij-1;
k=mij;}
else if(l[mij]<v[i]) x=mij+1;
else {k=mij; break;}
}
if(k==0) {++m;
k=m;}
l[k]=v[i];
poz[i]=k;
}
for(i=m;i>0;--i)
{
while(n && poz[n]!=i)
--n;
l[i]=v[n];
}
g<<m<<"\n";
for(i=1;i<=m;++i)
g<<l[i]<<" ";
g<<"\n";
f.close();
g.close();
return 0;
}