Cod sursa(job #1306306)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 30 decembrie 2014 20:34:13
Problema Pachete Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.65 kb
#include <fstream>
#include <algorithm>
#define f first
#define s second
using namespace std;

ifstream fin("pachete.in");
ofstream fout("pachete.out");

int n, p, nr1, x, y, j, w[5],nr2;
int s[50010], a, b, u, mid, d, i;
pair <int, int> v[5][50010];

void code(){
    for(d = 1; d <= 4; d ++){
        sort(v[d] + 1, v[d] + w[d] + 1);
        if(w[d] != 0){
            nr2 = 1;
            s[1] = v[d][1].s;
            for(i = 2; i <= w[d]; i++){
                p = 1;
                u = nr2;
                while(p <= u){
                    mid = (p + u) / 2;
                    if(v[d][i].s < s[mid]){
                        p = mid + 1;
                    }
                    else{
                        u = mid - 1;
                    }
                }
                s[nr2] = v[1][i].s;
            }
            nr1 += nr2;
        }
    }
    fout << nr1;
    return;
}

void read(){
    fin >> n >> x >> y;
    for(i = 1; i <= n; i++){
        fin >> a >> b;
        if(a >= x){
            if(b > y){
                w[1] ++;
                v[1][w[1]].f = a;
                v[1][w[1]].s = b;
            }
            else{
                w[2] ++;
                v[2][w[2]].f = a;
                v[2][w[2]].s = b;
            }
        }
        else{
            if(b <= y){
                w[3] ++;
                v[3][w[3]].f = a;
                v[3][w[3]].s = b;
            }
            else{
                w[4] ++;
                v[4][w[4]].f = a;
                v[4][w[4]].s = b;
            }
        }
    }
    return;
}

int main(){
    read();code();
    return 0;
}