Pagini recente » Cod sursa (job #2293802) | Cod sursa (job #2003116) | Cod sursa (job #2896593) | Cod sursa (job #70957) | Cod sursa (job #1981653)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fi("scmax.in");
ofstream fo("scmax.out");
int n,V[100001],A[100001],a,x,P[100001]={-1};
bool compar(int a,int b)
{
if(V[a]<V[b])
return true;
return false;
}
void afisare(int n)
{
if(P[n]>0)
afisare(P[n]);
fo<<V[n]<<" ";
}
int main()
{
fi>>n;
for(int i=1;i<=n;i++)
fi>>V[i];
for(int i=1;i<=n;i++)
{
int *p=lower_bound(A+1,A+a+1,i,compar);
if(V[A[p-A]]==V[i])
continue;
if(p==A+a+1)
{
P[i]=A[a];
A[++a]=i;
}
else
{
P[i]=A[p-A-1];
A[p-A]=i;
}
}
fo<<a<<"\n";
afisare(A[a]);
fi.close();
fo.close();
return 0;
}