Cod sursa(job #2153396)

Utilizator alexsandulescuSandulescu Alexandru alexsandulescu Data 6 martie 2018 10:05:38
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <algorithm>

using namespace std;

int N, M;
struct nod {
    int val, poz;
} D[100003], T[100003];
int sumD[100003], sumT[100003];

bool cmp(nod x, nod y) {
    return y.val > x.val;
}
bool cmp1(nod x, nod y) {
    return y.poz > x.poz;
}
int main() {

    cin >> N >> M;
    for(int i = 1; i <= N; i++)
        cin >> T[i].val >> D[i].val, T[i].poz = D[i].poz = i;
    sort(T + 1, T + N + 1, cmp);
    sort(D + 1, D + N + 1, cmp);
    for(int i = N; i >= 1; i--)
        T[i].val -= T[i - 1].val, D[i].val -= D[i - 1].val;
    sort(T + 1, T + N + 1, cmp1);
    sort(D + 1, D + N + 1, cmp1);
    for(int i = 1; i <= N; i++)
        sumT[i] = sumT[i - 1] + T[i].val, sumD[i] = sumD[i - 1] + D[i].val;
    for(int i = 1; i <= M; i++) {
        int x, y;
        cin >> x >> y;
        cout << (sumT[y] - sumT[x - 1] < sumD[y] - sumD[x - 1]) << "\n";
    }
    return 0;
}