제출 #810774

#제출 시각아이디문제언어결과실행 시간메모리
810774MyCodeA Difficult(y) Choice (BOI21_books)C++17
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> #include "books.h" using namespace std; void solve(int n, int k, long long A, int S) { if (S == n) { long long a[n + 1]; for (int i = 1; i <= n; i++) a[i] = skim(i); long long pref[n + 1]; pref[0] = 0; for (int i = 1; i <= n; i++) pref[i] = a[i] + pref[i - 1]; function<long long(int, int)> sum = [&](int l, int r) { return pref[r] - pref[l - 1]; }; for (int i = 1; i <= n; i++) { if (sum(i, i + k - 1) >= A && sum(i, i + k - 1) <= 2 * A) { vector<int> ans; for (int j = i; j < i + k; j++) ans.emplace_back(j); answer(ans); return; } }; long long s[n + 1]; for (int i = 1; i + k - 2 <= n; i++) s[i] = sum(i, i + k - 2); for (int i = k; i <= n; i++) { int l = 1, r = i - k + 1; while (r - l > 1) { int m = (l + r) >> 1; if (s[m] + a[i] >= A) r = m; else l = m; } int ind = -1; if (s[l] + a[i] >= A)ind = l; else if (s[r] + a[i] >= A)ind = r; if (ind != -1 && s[ind] + a[i] <= 2 * A) { vector<int> ans; for (int j = ind; j < ind + k - 1; j++) ans.emplace_back(j); ans.emplace_back(i); answer(ans); return; } } impossible(); return; } long long sum = 0; vector<pair<int, long long>> ans; for (int i = 1; i <= k; i++) { int t = skim(i); sum += t; ans.emplace_back(i, t); } for (int j = k; j >= 1; j--) { if (sum >= A)break; int l = ans[j].first, r = (j + 1 <= k ? ans[j + 1].first - 1 : n); long long val = ans[j].second; while (r - l > 1) { int m = (l + r) / 2; if (sum - val + skim(m) >= A) r = m; else l = m; } int s1 = skim(l), s2 = skim(r); if (sum - val + s1 >= A) ans[j].first = l, ans[j].second = s1, sum = sum - val + s1; else ans[j].first = r, ans[j].second = s2, sum = sum - val + s2; } if (sum > 2 * A || sum < A) impossible(); else { answer(ans); } }

컴파일 시 표준 에러 (stderr) 메시지

books.cpp: In function 'void solve(int, int, long long int, int)':
books.cpp:84:16: error: could not convert 'ans' from 'vector<std::pair<int, long long int>>' to 'vector<int>'
   84 |         answer(ans);
      |                ^~~
      |                |
      |                vector<std::pair<int, long long int>>