Pagini recente » Cod sursa (job #1553696) | Cod sursa (job #2111949) | Cod sursa (job #2574156) | Cod sursa (job #1177310) | Cod sursa (job #2415093)
#include <iostream>
#include <vector>
#define KMAX 50000
#define NMAX 100000
#define MOD 20011
using namespace std;
vector <long long> v [ NMAX ] ;
long long bs (long long x, long long n) {
long long mid, st, dr ;
st = 0 ;
dr = n ;
while (st <= dr ) {
mid = (st + dr ) / 2 ;
if ( v[mid].size() > 0 && v[mid][v[mid].size()-1] >= x )
st = mid + 1 ;
else
dr = mid - 1 ;
}
return st ;
}
int main() {
FILE *fin, *fout ;
fin = fopen ("scmax.in", "r" ) ;
fout = fopen ("scmax.out", "w" ) ;
long long n, elem, l, i, j, maxim, poz ;
fscanf (fin, "%lld", &n ) ;
l = 0 ;
for (i = 0 ; i < n ; i++ ) {
fscanf (fin, "%lld", &elem ) ;
j = bs (elem, l ) ;
if (j == l )
l++;
v[j].push_back(elem) ;
}
maxim = 0 ;
poz = 0 ;
for (i = 0 ; i < l ; i ++ ) {
if (v[i].size() > maxim ) {
maxim = v[i].size() ;
poz = i ;
}
}
fprintf (fout, "%lld\n", maxim ) ;
for (i = 0 ; i < v[poz].size() ; i++ )
fprintf (fout, "%lld ", v[poz][i] ) ;
return 0;
}