#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
void * wmem;
char memarr[ 96000000 ] ;
template < class T> inline void walloc1d( T ** arr, int x, void ** mem = & wmem) {
static int skip[ 16 ] = { 0 , 15 , 14 , 13 , 12 , 11 , 10 , 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 } ;
( * mem) = ( void * ) ( ( ( char * ) ( * mem) ) + skip[ ( ( unsigned long long ) ( * mem) ) & 15 ] ) ;
( * arr) = ( T* ) ( * mem) ;
( * mem) = ( ( * arr) + x) ;
}
template < class T> inline void walloc1d( T ** arr, int x1, int x2, void ** mem = & wmem) {
walloc1d( arr, x2- x1, mem) ;
( * arr) - = x1;
}
template < class T> void smallestSubsequenceLengthK( int N, T A[ ] , int K, T res[ ] , void * mem = wmem) {
int i;
int d = N - K;
int s = 0 ;
T* st;
walloc1d( & st, N, & mem) ;
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
while ( s > 0 && d > 0 && A[ i] < st[ s- 1 ] ) {
s-- ;
d-- ;
}
st[ s++ ] = A[ i] ;
}
for ( i= ( 0 ) ; i< ( K) ; i++ ) {
res[ i] = st[ i] ;
}
}
#define main dummy_main
int main( ) {
wmem = memarr;
return 0 ;
}
#undef main
int A[ 100000 ] ;
int r[ 100000 ] ;
class Solution{
public :
vector< int > mostCompetitive( vector< int > & nums, int k) {
int i;
dummy_main( ) ;
int N = nums.size ( ) ;
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
A[ i] = nums[ i] ;
}
smallestSubsequenceLengthK( N, A, k, r) ;
return vector< int > ( r, r+ k) ;
}
}
;
// cLay version 20201206-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// int A[1d5], r[1d5];
//
// class Solution {
// public:
// vector<int> mostCompetitive(vector<int>& nums, int k) {
// dummy_main();
// int N = nums.size();
// rep(i,N) A[i] = nums[i];
// smallestSubsequenceLengthK(N, A, k, r);
// return vector<int>(r, r+k);
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnZvaWQqd21lbTsKY2hhciBtZW1hcnJbOTYwMDAwMDBdOwp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdm9pZCB3YWxsb2MxZChUICoqYXJyLCBpbnQgeCwgdm9pZCAqKm1lbSA9ICZ3bWVtKXsKICBzdGF0aWMgaW50IHNraXBbMTZdID0gezAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDF9OwogICgqbWVtKSA9ICh2b2lkKikoICgoY2hhciopKCptZW0pKSArIHNraXBbKCh1bnNpZ25lZCBsb25nIGxvbmcpKCptZW0pKSAmIDE1XSApOwogICgqYXJyKT0oVCopKCptZW0pOwogICgqbWVtKT0oKCphcnIpK3gpOwp9CnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB2b2lkIHdhbGxvYzFkKFQgKiphcnIsIGludCB4MSwgaW50IHgyLCB2b2lkICoqbWVtID0gJndtZW0pewogIHdhbGxvYzFkKGFyciwgeDIteDEsIG1lbSk7CiAgKCphcnIpIC09IHgxOwp9CnRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgc21hbGxlc3RTdWJzZXF1ZW5jZUxlbmd0aEsoaW50IE4sIFQgQVtdLCBpbnQgSywgVCByZXNbXSwgdm9pZCAqbWVtID0gd21lbSl7CiAgaW50IGk7CiAgaW50IGQgPSBOIC0gSzsKICBpbnQgcyA9IDA7CiAgVCpzdDsKICB3YWxsb2MxZCgmc3QsIE4sICZtZW0pOwogIGZvcihpPSgwKTtpPChOKTtpKyspewogICAgd2hpbGUocyA+IDAgJiYgZCA+IDAgJiYgQVtpXSA8IHN0W3MtMV0pewogICAgICBzLS07CiAgICAgIGQtLTsKICAgIH0KICAgIHN0W3MrK10gPSBBW2ldOwogIH0KICBmb3IoaT0oMCk7aTwoSyk7aSsrKXsKICAgIHJlc1tpXSA9IHN0W2ldOwogIH0KfQojZGVmaW5lIG1haW4gZHVtbXlfbWFpbgppbnQgbWFpbigpewogIHdtZW0gPSBtZW1hcnI7CiAgcmV0dXJuIDA7Cn0KI3VuZGVmIG1haW4KaW50IEFbMTAwMDAwXTsKaW50IHJbMTAwMDAwXTsKY2xhc3MgU29sdXRpb257CiAgcHVibGljOgogIHZlY3RvcjxpbnQ+IG1vc3RDb21wZXRpdGl2ZSh2ZWN0b3I8aW50PiYgbnVtcywgaW50IGspewogICAgaW50IGk7CiAgICBkdW1teV9tYWluKCk7CiAgICBpbnQgTiA9IG51bXMuc2l6ZSgpOwogICAgZm9yKGk9KDApO2k8KE4pO2krKyl7CiAgICAgIEFbaV0gPSBudW1zW2ldOwogICAgfQogICAgc21hbGxlc3RTdWJzZXF1ZW5jZUxlbmd0aEsoTiwgQSwgaywgcik7CiAgICByZXR1cm4gdmVjdG9yPGludD4ociwgcitrKTsKICB9Cn0KOwovLyBjTGF5IHZlcnNpb24gMjAyMDEyMDYtMQoKLy8gLS0tIG9yaWdpbmFsIGNvZGUgLS0tCi8vICNkZWZpbmUgbWFpbiBkdW1teV9tYWluCi8vIHt9Ci8vICN1bmRlZiBtYWluCi8vIAovLyBpbnQgQVsxZDVdLCByWzFkNV07Ci8vIAovLyBjbGFzcyBTb2x1dGlvbiB7Ci8vIHB1YmxpYzoKLy8gICB2ZWN0b3I8aW50PiBtb3N0Q29tcGV0aXRpdmUodmVjdG9yPGludD4mIG51bXMsIGludCBrKSB7Ci8vICAgICBkdW1teV9tYWluKCk7Ci8vICAgICBpbnQgTiA9IG51bXMuc2l6ZSgpOwovLyAgICAgcmVwKGksTikgQVtpXSA9IG51bXNbaV07Ci8vICAgICBzbWFsbGVzdFN1YnNlcXVlbmNlTGVuZ3RoSyhOLCBBLCBrLCByKTsKLy8gICAgIHJldHVybiB2ZWN0b3I8aW50PihyLCByK2spOwovLyAgIH0KLy8gfTsK