Pagini recente » Cod sursa (job #762137) | Cod sursa (job #1318251) | Cod sursa (job #2733065) | Cod sursa (job #2593728) | Cod sursa (job #2415081)
#include <iostream>
#include <vector>
#define KMAX 50000
#define NMAX 100000
#define MOD 20011
using namespace std;
vector <int> v [ NMAX ] ;
int bs (int x, int n) {
int 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" ) ;
int n, elem, l, sum, i, j, maxim, poz ;
fscanf (fin, "%d", &n ) ;
l = 0 ;
for (i = 0 ; i < n ; i++ ) {
fscanf (fin, "%d", &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, "%d\n", maxim ) ;
for (i = 0 ; i < v[poz].size() ; i++ )
fprintf (fout, "%d ", v[poz][i] ) ;
return 0;
}