Cod sursa(job #1416115)

Utilizator alexandra_udristoiuUdristoiu Alexandra Maria alexandra_udristoiu Data 7 aprilie 2015 13:33:33
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include<fstream>
#include<algorithm>
using namespace std;
int n, nr, i, p, u, mid, maxim;
pair<int, int> v[100002];
int w[100002];
int cmp(pair<int, int> a, pair<int, int> b){
    if(a.first == b.first){
        return a.second > b.second;
    }
    return a.first < b.first;
}
ifstream fin("plicuri.in");
ofstream fout("plicuri.out");
int main(){
    fin>> n;
    for(i = 1; i <= n; i++){
        fin>> v[i].first >> v[i].second;
    }
    sort(v + 1, v + n + 1, cmp);
    nr = 1;
    w[1] = 1;
    for(i = 2; i <= n; i++){
        if(v[w[nr]].second < v[i].second){
            nr++;
            w[nr] = i;
        }
        else{
            p = 1;
            u = nr;
            while(p <= u){
                mid = (p + u) / 2;
                if(v[w[mid]].second > v[i].second){
                    u = mid - 1;
                }
                else{
                    p = mid + 1;
                }
            }
            if(v[i].second > v[w[p-1]].second){
                w[p] = i;
            }
        }
    }
    fout<< nr <<"\n";
    return 0;
}