본문 바로가기

백준

11663 선분 위의 점

입력 사이즈를 보니 NlogN에 풀어야겠다는 걸 생각했고 문제 읽어보니 정렬한 다음 이진탐색으로 풀면 될 것 같았다. 

 lower_bound와 upper_bound 사용해서 풀었다. 간단

 

 

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <functional>
#include <string>
#include <queue>
#include <deque>
#include <stack>
#include <set>
#include <map>
#include <cmath>
#include <cstring>
#include <bitset>
#include <stdio.h>
#include <math.h>

#define xx first
#define yy second
#define all(x) (x).begin(), (x).end()

using namespace std;
using i64 = long long int;
using ii = pair<int, int>;
using iis = pair<int, string>;
using ii64 = pair<i64, i64>;
using iii = tuple<int, int, int>;

int main() {
    int n, m;
    scanf("%d %d", &n, &m);
    
    vector<int> v(n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &v[i]);
    }
    
    sort(all(v));
    
    for (int j = 0; j < m; j++) {
        int x1, x2;
        scanf("%d %d", &x1, &x2);
        
        printf("%d\n", upper_bound(all(v), x2) - lower_bound(all(v), x1));
        
    }

    return 0;
}

 

'백준' 카테고리의 다른 글

1138 한 줄로 서기  (0) 2021.10.11
14713 앵무새  (0) 2021.09.26
2579 계단오르기  (0) 2021.09.24
2257 화학식량  (0) 2021.09.23
1448 삼각형 만들기  (0) 2021.09.19