티스토리 뷰

알고리즘/BOJ

[백준] 12892 생일 선물

세진짱 2018. 7. 22. 14:32

벡터 정렬 잘못해서 계속 틀렸다 굿

사소한거로 매일 틀린다 ..


이 문제는 최소 가격차가 D미만이면 된다

그럼 가격대로 정렬시키고 D미만인 경우만 다 더해보면 된다

부분합으로 미리 구해도 괜찮고 

그냥 하나하나 보면서 앞에는 빼고 뒤는 더해도 괜찮다

벡터 정렬할 때 1베이스로 할거면 begin() +1 ~ end() 까지 하자..

end()+1로 계속 하고있었는데 70퍼 까지 가길ㄹ ㅐ 

오타찾았는데... 나중에야 찾았다..


소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
#define ll long long
const int MAXN = 1e5 + 3;
ll ans, temp;
int n, d, l, r;
int main() {
    scanf(" %d %d"&n, &d);
    vector<pair<ll, ll>> vt(n + 1);
    for (int i = 1; i <= n; i++scanf(" %lld %lld"&vt[i].first, &vt[i].second);
    sort(vt.begin() + 1, vt.end());
    l = r = 1;
    while (l <= r && r <= n) {
        if (vt[r].first - vt[l].first < d) temp += (ll)vt[r++].second;
        else temp -= (ll)vt[l++].second;
        ans = max(ans, temp);
    }
    printf("%lld\n", ans);
}
cs


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

[백준] 12914 곰을 위한 레스토랑  (0) 2018.07.23
[백준] 12896 스크루지 민호  (0) 2018.07.22
[백준] 14679 영우와 '갓4'  (0) 2018.07.19
[백준] 5446 용량 부족  (0) 2018.07.18
[백준] 12861 죄수에게 주는 뇌물  (0) 2018.07.18
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함