109242024-04-19 11:51:23k_balintTelefonközpontcpp17Accepted 100/100165ms9620 KiB
#include <bits/stdc++.h>
using namespace std;
const int c=2e5+5;

int m,n,q;
int arr[c],tree[4*c];

void build(int v, int l, int r){
    if(l==r){
        tree[v]=arr[l];
        return;
    }

    int mid=l+r>>1;
    build(2*v,l,mid);
    build(2*v+1,mid+1,r);
    tree[v]=max(tree[2*v],tree[2*v+1]);
}

int query(int v, int l, int r, int a, int b){
    if(l>r || l>b || a>r || a>b) return 0;
    if(a<=l && r<=b) return tree[v];
    int mid=l+r>>1;
    return max(query(2*v,l,mid,a,b), query(2*v+1,mid+1,r,a,b));
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    cin>>m>>n>>q;
    for(int i=1;i<=n;i++){
        int a,b; cin>>a>>b;
        arr[a]++; arr[b+1]--;
    }

    for(int i=1;i<=m;i++) arr[i]+=arr[i-1];

    build(1,1,m);

    while(q--){
        int a,b;
        cin>>a>>b;
        cout << query(1,1,m,a,b) << '\n';
    }
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted3ms2048 KiB
2Accepted3ms2268 KiB
subtask220/20
3Accepted3ms2548 KiB
4Accepted3ms2660 KiB
5Accepted3ms2832 KiB
6Accepted3ms3044 KiB
7Accepted3ms3256 KiB
8Accepted3ms3216 KiB
9Accepted3ms3216 KiB
subtask320/20
10Accepted3ms2548 KiB
11Accepted3ms2660 KiB
12Accepted3ms2832 KiB
13Accepted3ms3044 KiB
14Accepted3ms3256 KiB
15Accepted3ms3216 KiB
16Accepted3ms3216 KiB
17Accepted6ms3268 KiB
18Accepted6ms3540 KiB
19Accepted6ms3436 KiB
20Accepted6ms3436 KiB
21Accepted6ms3616 KiB
22Accepted6ms3872 KiB
23Accepted6ms4036 KiB
subtask460/60
24Accepted3ms2548 KiB
25Accepted3ms2660 KiB
26Accepted3ms2832 KiB
27Accepted3ms3044 KiB
28Accepted3ms3256 KiB
29Accepted3ms3216 KiB
30Accepted3ms3216 KiB
31Accepted6ms3268 KiB
32Accepted6ms3540 KiB
33Accepted6ms3436 KiB
34Accepted6ms3436 KiB
35Accepted6ms3616 KiB
36Accepted6ms3872 KiB
37Accepted6ms4036 KiB
38Accepted165ms9388 KiB
39Accepted165ms9584 KiB
40Accepted162ms9620 KiB
41Accepted162ms9616 KiB
42Accepted160ms9504 KiB
43Accepted160ms9512 KiB
44Accepted160ms9504 KiB