Pagini recente » Cod sursa (job #703683) | Cod sursa (job #1264816) | Cod sursa (job #1235809) | Cod sursa (job #671480) | Cod sursa (job #1614835)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <stack>
using namespace std;
ifstream in("subsir2.in");
ofstream out("subsir2.out");
int v[100003];
int s[100003];
int o[100003];
int k;
int main() {
int n;
in >> n;
for(int i = 0; i < n; i++) {
in >> v[i];
s[i] = 1000003;
o[i] = 5001;
}
for(int i = 0; i < n; i++) {
int poz = lower_bound(s, s+n, v[i])-s;
//cout << "Low " << v[i] << " " << poz << endl;
s[poz] = v[i];
o[poz] = i;
k = poz;
while(poz < n && s[poz+1] != 1000003) {
s[++poz] = 1000003;
o[poz] = 5001;
}
/*for(int i = 0; i < n; i++)
cout << s[i] << " ";
cout << endl;*/
}
out << k+1 << '\n';
for(int i = 0; i < n && o[i] != 5001; i++)
out << o[i]+1 << " ";
int poz = 0;
return 0;
}