Pagini recente » Rating Stoenica Veronica (St-Ver) | Cod sursa (job #202228) | Clasament dupa rating | Istoria paginii utilizator/somedad | Cod sursa (job #2008074)
#include<fstream>
using namespace std;
ifstream fi("scmax.in");
ofstream fo("scmax.out");
int n,i,j,a[100001],b[100001],poz[100001],sol[100001],k,P;
int cautare (int S,int D,int x,int a[])
{
int M;
while(S<=D)
{
M=(S+D)/2;
if(a[M] == x) return M;
if(a[M] < x) S=M+1;
if(a[M] > x) D=M-1;
}
}
int main()
{
fi>>n;
for(i=1; i<=n; i++) fi>>a[i];
for(i=1; i<=n; i++)
{
P=cautare(1,k,a[i],b); //cautam binar elementul a[i] in sirul b in intervalul[1,k]
if (P>k)k++;
b[P]=a[i];
poz[i]=P;
}
for(i=n; i>=1&&k; i--)
if(poz[i]==k) {sol[++j]=a[i];
k--;
}
for(fo<<j<<'\n'; j; fo<<sol[j--]<<" ");
}