Pagini recente » Cod sursa (job #1051756) | Cod sursa (job #1837214) | Cod sursa (job #2149132) | Cod sursa (job #2671937) | Cod sursa (job #2304552)
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n, i, j, v[100010], d[100010], st, dr, mid, indice, k;
int main(){
fin>>n;
fin>>v[1];
k=1;
d[1]=1;
for(i=2; i<=n; i++){
fin>>v[i];
///cautam ultimul nr mai mic decat v[i]
st=1;
dr=k;
while(st<=dr){
mid=(st+dr)/2;
indice=d[mid];
if(v[indice]<=v[i]){
dr=mid-1;
}else{
st=mid+1;
}
}
indice=d[dr];
if(dr==0){
if(v[k]!=v[i]){
k++;
d[k]=i;
}
}else{
d[dr]=i;
}
}
int k2=k;
for(i=2; i<=k; i++){
if(v[d[i]]==v[d[i-1]]){
k2--;
}
}
fout<<k2<<"\n";
for(i=1; i<=k; i++){
if(v[d[i]]!=v[d[i-1]]){
fout<<v[ d[i] ]<<" ";
}
}
}