Submission #863739

#TimeUsernameProblemLanguageResultExecution timeMemory
863739TAhmed33A Difficult(y) Choice (BOI21_books)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> #include <books.h> using namespace std; typedef long long ll; bool check (ll sum, ll a) { return sum >= a && sum <= 2 * a; } void solve (int n, int k, ll a, int s) { map <int, ll> dd; int l = k, r = n; for (int i = 1; i < k; i++) dd[i] = skim(i); int ans = -1; while (l <= r) { int mid = (l + r) >> 1; if (!dd.count(mid)) dd[mid] = skim(mid); if (dd[mid] > a) { r = mid - 1; ans = mid; } else { l = mid + 1; } } ll sum = 0; for (int i = 1; i < k; i++) sum += dd[i]; if (ans != -1) { sum += dd[ans]; if (check(sum, a)) { vector <int> t; for (int i = 1; i < k; i++) t.push_back(i); t.push_back(ans); answer(t); } } set <int> u; if (!dd.count(k)) dd[k] = skim(k); vector <pair <int, ll>> u; for (int i = 1; i <= k; i++) { if (!dd.count(i)) dd[i] = skim(i); u.push_back({i, dd[i]}); } for (int i = ans - k; i < ans; i++) { if (!dd.count(i)) dd[i] = skim(i); u.push_back({i, dd[i]}); } sum = 0; for (int i = 0; i < k; i++) sum += u[i].second; if (check(sum, a)) { vector <int> t; for (int i = 0; i < k; i++) t.push_back(u[i].first); sort(t.begin(), t.end()); answer(t); } for (int i = k; i < (int)u.size(); i++) { sum -= u[i - k].second; sum += u[i].second; if (check(sum, a)) { vector <int> t; for (int j = i - k + 1; j <= i; j++) { t.push_back(u[j].first); } sort(t.begin(), t.end()); answer(t); } } impossible(); }

Compilation message (stderr)

books.cpp: In function 'void solve(int, int, ll, int)':
books.cpp:35:26: error: conflicting declaration 'std::vector<std::pair<int, long long int> > u'
   35 |  vector <pair <int, ll>> u;
      |                          ^
books.cpp:33:12: note: previous declaration as 'std::set<int> u'
   33 |  set <int> u;
      |            ^
books.cpp:38:5: error: 'class std::set<int>' has no member named 'push_back'
   38 |   u.push_back({i, dd[i]});
      |     ^~~~~~~~~
books.cpp:42:5: error: 'class std::set<int>' has no member named 'push_back'
   42 |   u.push_back({i, dd[i]});
      |     ^~~~~~~~~
books.cpp:45:38: error: no match for 'operator[]' (operand types are 'std::set<int>' and 'int')
   45 |  for (int i = 0; i < k; i++) sum += u[i].second;
      |                                      ^
books.cpp:48:44: error: no match for 'operator[]' (operand types are 'std::set<int>' and 'int')
   48 |   for (int i = 0; i < k; i++) t.push_back(u[i].first);
      |                                            ^
books.cpp:53:11: error: no match for 'operator[]' (operand types are 'std::set<int>' and 'int')
   53 |   sum -= u[i - k].second;
      |           ^
books.cpp:54:11: error: no match for 'operator[]' (operand types are 'std::set<int>' and 'int')
   54 |   sum += u[i].second;
      |           ^
books.cpp:58:18: error: no match for 'operator[]' (operand types are 'std::set<int>' and 'int')
   58 |     t.push_back(u[j].first);
      |                  ^