165262025-05-06 10:39:10BucsMateTelefonközpontcpp17Accepted 100/100321ms5688 KiB
#include <iostream>
#include <vector>

using namespace std;

vector<int> segmTree(800008, 0);
vector<int> tomb(200001, 0);

void constructTree(int node, int left, int right)
{
    if(left > right){
        return;
    }
    if(left == right){
        segmTree[node] = tomb[left];
        return;
    }
    int mid = (left + right)/2;
    constructTree(2*node, left, mid);
    constructTree(2*node+1, mid+1, right);

    segmTree[node] = max(segmTree[2*node], segmTree[2*node+1]);
}

int query(int node, int left, int right, int a, int b)
{
    if(left > right){
        return 0;
    }
    if(right < a || left > b){
        return 0;
    }
    if(left >= a && right <= b){
        return segmTree[node];
    }
    int maxleft = 0, maxright = 0;
    int mid = (left + right)/2;

    if(a <= mid){
        maxleft = query(2*node, left, mid, a, b);
    }
    if(mid < b){
        maxright = query(2*node+1, mid+1, right, a, b);
    }
    return max(maxleft, maxright);
}

int main()
{
    int M, N, Q;
    cin >> M >> N >> Q;

    for(int i = 0; i < N; i++){
        int a, b;
        cin >> a >> b;
        tomb[a]++;
        tomb[b+1]--;
    }
    for(int i = 2; i <= 200000; i++){
        tomb[i] = tomb[i-1] + tomb[i];
    }
    constructTree(1, 1, M);
    /*cout << "-----------------\n";
    for(int i = 1; i <= M; i++){
        cout << tomb[i] << " ";
    }
    cout << "\n-----------------\n";*/
    int a, b;
    vector<int> ans(Q);
    for(int i = 0; i < Q; i++){
        cin >> a >> b;
        ans[i] = query(1, 1, M, a, b);
    }
    for(int i = 0; i < Q; i++){
        cout << ans[i] << "\n";
    }
    return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted4ms4148 KiB
2Accepted4ms4148 KiB
subtask220/20
3Accepted4ms4148 KiB
4Accepted4ms4148 KiB
5Accepted4ms4148 KiB
6Accepted4ms4152 KiB
7Accepted4ms4148 KiB
8Accepted4ms4148 KiB
9Accepted4ms4152 KiB
subtask320/20
10Accepted4ms4148 KiB
11Accepted4ms4148 KiB
12Accepted4ms4148 KiB
13Accepted4ms4152 KiB
14Accepted4ms4148 KiB
15Accepted4ms4148 KiB
16Accepted4ms4152 KiB
17Accepted10ms4348 KiB
18Accepted9ms4148 KiB
19Accepted9ms4192 KiB
20Accepted9ms4348 KiB
21Accepted9ms4148 KiB
22Accepted10ms4148 KiB
23Accepted9ms4340 KiB
subtask460/60
24Accepted4ms4148 KiB
25Accepted4ms4148 KiB
26Accepted4ms4148 KiB
27Accepted4ms4152 KiB
28Accepted4ms4148 KiB
29Accepted4ms4148 KiB
30Accepted4ms4152 KiB
31Accepted10ms4348 KiB
32Accepted9ms4148 KiB
33Accepted9ms4192 KiB
34Accepted9ms4348 KiB
35Accepted9ms4148 KiB
36Accepted10ms4148 KiB
37Accepted9ms4340 KiB
38Accepted321ms5600 KiB
39Accepted321ms5684 KiB
40Accepted319ms5612 KiB
41Accepted317ms5608 KiB
42Accepted316ms5608 KiB
43Accepted319ms5684 KiB
44Accepted317ms5688 KiB