Pagini recente » Cod sursa (job #577124) | Cod sursa (job #323911) | Cod sursa (job #1399719) | Cod sursa (job #690573) | Cod sursa (job #2982080)
#include <bits/stdc++.h>
using namespace std;
ifstream f("sclm.in");
ofstream g("sclm.out");
int n,m,k,i,j,p,st,dr,mij,A[100005],D[100005],P[100005],I[100005];
int main()
{
f>>n;
for(i=1; i<=n; i++)
{
f>>A[i];
}
k=1;
D[1]=A[1];
P[1]=1;
for(i=2; i<=n; i++)
{
if(A[i]>D[k])
{
k++;
D[k]=A[i];
P[i]=k;
}
else
{
st=1;
dr=k;
p=k+1;
while(st<=dr)
{
mij=(st+dr)/2;
if(D[mij]>A[i])
{
p=mij;
dr=mij-1;
}
else
{
st=mij+1;
}
}
D[p]=A[i];
P[i]=p;
}
}
j=n;
for(i=k; i>=1; i--)
{
while(P[j]!=i)
{
j--;
}
I[i]=j;
}
g<<k<<'\n';
for(i=1; i<=k; i++)
{
g<<I[i]<<' ';
}
return 0;
}