티스토리 뷰
벡터 정렬 잘못해서 계속 틀렸다 굿
사소한거로 매일 틀린다 ..
이 문제는 최소 가격차가 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 |
댓글