Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- using namespace std;
- ofstream out("sclm2.out");
- int n, v[100005], l, poz[100005], pred[100005];
- void citire() {
- ifstream in("sclm2.in");
- in >> n;
- for(int i = 1; i <= n; ++i)
- in >> v[i];
- in.close();
- }
- int cautb(int val) {
- if(val >= v[poz[l]])
- return l + 1;
- int st = 1, dr = l, m;
- while(st < dr) {
- m = (st + dr) / 2;
- if(v[poz[m]] > val)
- dr = m;
- else
- st = m + 1;
- }
- return st;
- }
- int main() {
- citire();
- poz[++l] = 1;
- for(int i = 2; i <= n; ++i) {
- int j = cautb(v[i]);
- pred[i] = poz[j - 1];
- if(j > l)
- l = j;
- poz[j] = i;
- }
- out << l;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement