Pagini recente » Cod sursa (job #2880287) | Cod sursa (job #2466293) | Cod sursa (job #1644074) | Cod sursa (job #1662706) | Cod sursa (job #2479682)
#include <bits/stdc++.h>
#define FAST ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#define ll long long
#define codechef FAST int t;cin>>t;while(t--)
const int MAX=1000000;
using namespace std;
int v[MAX+5],d[MAX+5],cnt,p[MAX+5],vect[MAX+5],n,lung[MAX+5],maxim=0,k=-1,maxx=1,sol;
void cautare_binara(int target)
{
int l, r, mid;
l=0;
r=maxx;
sol=0;
while(l<=r)
{
mid=(l+r)/2;
if(lung[mid]<target)
{
sol = mid;
l=mid+1;
}
else
r=mid-1;
}
maxx=max(maxx, sol+1);
}
int main()
{
FAST
ifstream in("scmax.in");
ofstream out("scmax.out");
in>>n;
int prev=0;
for(int i=1;i<=n;++i)
{
in>>v[i];
}
d[1]=1;
lung[1]=v[1];
maxx=1;
sort(v+1,v+n+1);
for(int i=2;i<=n;++i)
{
cautare_binara(v[i]);
d[i]=sol+1;
lung[sol+1]=v[i];
}
out<<maxx<<"\n";
k = maxx;
for(int i=n;i>=1;i--){
if(d[i]==k)
vect[k]=v[i];
--k;
}
for(int i=1;i<=maxx;++i)
out<<lung[i]<<" ";
return 0;
}