Pagini recente » Profil Daria09 | Cod sursa (job #884095) | Cod sursa (job #2389079) | Istoria paginii runda/simulare_fmi_nostress_2010 | Cod sursa (job #3182912)
#include <fstream>
using namespace std;
ifstream fin ("scmax.in");
ofstream fout("scmax.out");
int n,i,nr;
int v[100001];
int dp[100001];
int tata[100001];
void afisare(int k)
{
if(k!=0)
{
afisare(tata[k]);
fout<<v[k]<<" ";
}
}
int main()
{
fin>>n;
nr=0;
for(i=1;i<=n;i++)
{
fin>>v[i];
int p=0;
int st=1, dr=nr;
while(st<=dr)
{
int mid=(st+dr)/2;
if(v[dp[mid]]>=v[i])
{
p=mid;
dr=mid-1;
}
else
st=mid+1;
}
if(p==0)
{
dp[++nr]=i;
tata[i]=dp[nr-1];
}
else
{
dp[p]=i;
tata[i]=dp[p-1];
}
}
fout<<nr<<'\n';
afisare(dp[nr]);
return 0;
}