Pagini recente » Cod sursa (job #2628346) | Cod sursa (job #637521) | Cod sursa (job #1461969) | Cod sursa (job #1841038) | Cod sursa (job #2657361)
#include<bits/stdc++.h>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
const int N=100100;
int n, i, A[N], P[N], V[N], D[N], lo, hi, mi, LM;
void print(int C);
int main()
{
f>>n;
for(i=1; i<=n; i++)
f>>A[i];
for(i=1; i<=n; i++)
{
lo=0;
hi=LM+1;
while(hi-lo>1)
{
mi=(lo+hi)/2;
if(V[mi]<A[i])lo=mi;
else hi=mi;
}
P[hi]=i;
V[hi]=A[i];
D[i]=P[lo];
if(hi>LM)
LM++;
}
g<<LM<<'\n';
print(P[LM]);
return 0;
}
void solve()
{
}
void print(int C)
{
if(!C)return;
print(D[C]);
g<<A[C]<<' ';
}