답안 #676306

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
676306 2022-12-30T08:48:29 Z vjudge1 학교 설립 (IZhO13_school) C++17
35 / 100
201 ms 13800 KB
#include <bits/stdc++.h>
using namespace std;

const int N = 3e5 + 5;

/*
    i < j
    a[i] + b[j] > a[j] + b[i]
<=> a[i] - a[j] > b[i] - b[j]
--> just choose prefix
*/

int id[N];
int a[N], b[N];
int n, m, s;
int64_t pre[N], suf[N];

int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0); cout.tie(0);

  cin >> n >> m >> s;

  for (int i = 1; i <= n; i++) {
    cin >> a[i] >> b[i];
  }

  iota(id + 1, id + n + 1, 1);
  sort(id + 1, id + n + 1, [&](int i, int j) {
    return a[i] - a[j] > b[i] - b[j];
  });

  {
    multiset<int> ss;
    int64_t cur = 0;
    for (int i = 1; i <= n; i++) {
      cur += a[id[i]];
      ss.insert(a[id[i]]);
      if (ss.size() > m) {
        cur -= *ss.begin();
        ss.erase(*ss.begin());
      }
      pre[i] = cur;
    }
  }

  {
    multiset<int> ss;
    int64_t cur = 0;
    for (int i = n; i >= 1; i--) {
      cur += b[id[i]];
      ss.insert(b[id[i]]);
      if (ss.size() > s) {
        cur -= *ss.begin();
        ss.erase(*ss.begin());
      }
      suf[i] = cur;
    }
  }

  int64_t best = 0;
  for (int i = m; i <= n - s; i++) {
    best = max(best, pre[i] + suf[i + 1]);
  }

  cout << best;

  return 0;
}

Compilation message

school.cpp: In function 'int main()':
school.cpp:39:21: warning: comparison of integer expressions of different signedness: 'std::multiset<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   39 |       if (ss.size() > m) {
      |           ~~~~~~~~~~^~~
school.cpp:53:21: warning: comparison of integer expressions of different signedness: 'std::multiset<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   53 |       if (ss.size() > s) {
      |           ~~~~~~~~~~^~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 340 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 0 ms 340 KB Output is correct
4 Incorrect 0 ms 340 KB Output isn't correct
5 Correct 0 ms 340 KB Output is correct
6 Correct 0 ms 340 KB Output is correct
7 Incorrect 3 ms 468 KB Output isn't correct
8 Correct 2 ms 596 KB Output is correct
9 Incorrect 2 ms 596 KB Output isn't correct
10 Incorrect 3 ms 596 KB Output isn't correct
11 Incorrect 2 ms 596 KB Output isn't correct
12 Incorrect 2 ms 596 KB Output isn't correct
13 Incorrect 23 ms 2804 KB Output isn't correct
14 Incorrect 38 ms 3412 KB Output isn't correct
15 Incorrect 65 ms 4940 KB Output isn't correct
16 Correct 124 ms 12664 KB Output is correct
17 Incorrect 157 ms 11204 KB Output isn't correct
18 Incorrect 155 ms 11212 KB Output isn't correct
19 Incorrect 177 ms 12196 KB Output isn't correct
20 Incorrect 201 ms 13800 KB Output isn't correct