Pagini recente » Istoria paginii runda/oni2014cls10z2/clasament | Cod sursa (job #705145) | Cod sursa (job #2033239) | Cod sursa (job #241774) | Cod sursa (job #857396)
Cod sursa(job #857396)
#include<fstream>
#define DIM 100010
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n,k,L[DIM],V[DIM],i,poz,T[DIM];
int cautare(int nr){
int st=1,dr=k;
int mid;
while(st<=dr){
mid=(st+dr)/2;
if(V[L[mid]]>nr)
dr=mid-1;
else{
if(V[L[mid+1]]>nr)
return mid;
else
st=mid+1;
}
}
if(V[L[mid]]>nr)
mid--;
return mid;
}
void print(int x){
if(x){
print(T[x]);
g<<V[x]<<" ";
}
}
int main(){
f>>n;
for(i=1;i<=n;i++)
f>>V[i];
L[1]=1;k=1;
for(i=2;i<=n;i++){
poz=cautare(V[i]);
if(V[i]==V[L[poz]])
continue;
if(poz>=k)
L[++k]=i;
else
L[poz+1]=i;
T[i]=L[poz];
}
g<<k<<"\n";
print(L[k]);
return 0;
}