165282025-05-06 10:41:54BucsMateTelefonközpontcpp17Accepted 100/100314ms6708 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);

    vector<pair<int, int>> queries(Q);
    vector<int> ans(Q);
    for(int i = 0; i < Q; i++){
        cin >> queries[i].first >> queries[i].second;
    }
    for(int i = 0; i < Q; i++){
        ans[i] = query(1, 1, M, queries[i].first, queries[i].second);
    }
    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
5Accepted4ms4152 KiB
6Accepted4ms4148 KiB
7Accepted4ms4148 KiB
8Accepted4ms4084 KiB
9Accepted4ms4148 KiB
subtask320/20
10Accepted4ms4148 KiB
11Accepted4ms4148 KiB
12Accepted4ms4152 KiB
13Accepted4ms4148 KiB
14Accepted4ms4148 KiB
15Accepted4ms4084 KiB
16Accepted4ms4148 KiB
17Accepted9ms4336 KiB
18Accepted9ms4152 KiB
19Accepted9ms4328 KiB
20Accepted9ms4332 KiB
21Accepted9ms4148 KiB
22Accepted9ms4380 KiB
23Accepted9ms4216 KiB
subtask460/60
24Accepted4ms4148 KiB
25Accepted4ms4148 KiB
26Accepted4ms4152 KiB
27Accepted4ms4148 KiB
28Accepted4ms4148 KiB
29Accepted4ms4084 KiB
30Accepted4ms4148 KiB
31Accepted9ms4336 KiB
32Accepted9ms4152 KiB
33Accepted9ms4328 KiB
34Accepted9ms4332 KiB
35Accepted9ms4148 KiB
36Accepted9ms4380 KiB
37Accepted9ms4216 KiB
38Accepted314ms6700 KiB
39Accepted312ms6636 KiB
40Accepted307ms6676 KiB
41Accepted305ms6684 KiB
42Accepted307ms6668 KiB
43Accepted307ms6708 KiB
44Accepted305ms6632 KiB