알고리즘/백준

백준 11116 교통량

등반 2021. 12. 27. 01:11

https://www.acmicpc.net/problem/11116

 

11116번: 교통량

첫 번째 줄에 n (1 ≤ n ≤ 100) 까지의 테스트 케이스의 개수를 입력 한다.  각각의 테스트 케이스에는 박스에서 측정 된 시간 기록의 개수 m (m ≤ 200)을 입력한다. 다음 줄에는 왼쪽 박스에서

www.acmicpc.net

문제 해설

왼쪽 줄을 지나간 시간과

오른쪽 줄을 지나간 시간이 주어질 때,

왼쪽에서 오른쪽으로 지나간 교통량을 구하는 문제다.

 

왼쪽에서 오른쪽으로 지나간 교통량이 될 수 있는 경우는

왼쪽 줄에 t, t+500이, 오른쪽 줄에 t+1000, t+1500이 존재하는 t이다.

map을 이용해 각각 log(n) 시간에 탐색해 해결할 수 있다.

 

#include <iostream>
#define fio cin.tie(0)->sync_with_stdio(0)
using namespace std;

#include <set>
int main(){
    fio;
    int T; cin >> T;
    for(int t = 1; t <= T; t++){
        //
        int N; cin >> N;
        set<int> left, right;
        for(int i=0; i < N; i++){
            int tmp; cin >> tmp;
            left.insert(tmp);
        }
        for(int i=0; i < N; i++){
            int tmp; cin >> tmp;
            right.insert(tmp);
        }
        int cnt = 0;
        set<int>::iterator iter;
        for(iter = left.begin(); iter != left.end(); iter++){
            int now = *iter;
            if(left.find(now+500) != left.end() &&
                right.find(now+1000) != right.end() &&
                    right.find(now+1500) != right.end()){
                        cnt++;
                    }
        }
        cout << cnt <<'\n';
        //
    }

    return 0;
}

'알고리즘 > 백준' 카테고리의 다른 글

백준 11346 Cornell Party - Retry  (0) 2021.12.27
백준 11235 Polling  (0) 2021.12.27
백준 10689 Hamza  (0) 2021.12.27
백준 10527 Judging Troubles  (0) 2021.12.27
백준 9733 꿀벌  (0) 2021.12.27