3863

#include <stdio.h>
#include <stdlib.h>

int main(void){
    int call_num = -1, part_num = -1;
    
    while(call_num != 0 && part_num != 0){
        // 통화 횟수, 도청 구간 횟수 입력
        scanf("%d %d", &call_num, &part_num);

        int (*call_arr)[2] = (int (*)[2])malloc(sizeof(int)*call_num*2);
        for(int i = 0; i < call_num; i++){
            int s,d;
            // Source, Destination, Start, Duration 입력
            // 사실상 Start, Duration이것만 사용
            scanf("%d %d %d %d", &s, &d, &call_arr[i][0], &call_arr[i][1]);
            
            // start을 더해서 call_arr[i][1]번째 수를 통화 끝나는 시간으로 만들어주기
            call_arr[i][1] += call_arr[i][0];
        }

        
        // 도청
        for(int i = 0; i < part_num; i++){
            int count = 0;
            int start = 0, duration = 0;
            // 도청할 구간 입력
            scanf("%d %d", &start, &duration);
            // Duration에 Start 더해서 duration을 도청을 끝내는 시간으로 만들어주기
            duration += start;

            // 겹치는지 확인하고 겹치는 구간이 1초라도 있다면 count 
            for(int j = 0; j < call_num; j++){
                if(start >= call_arr[j][0]){
                    if(start < call_arr[j][1]){
                        count++;
                    }
                }
                else if(duration <= call_arr[j][0]){
                    continue;
                }
                else{
                    count++;
                }

            }

            // 출력
            printf("%d\n", count);
        }

        free(call_arr);
    }
    return 0;
}

+ Recent posts