제출 #1368529

#제출 시각아이디문제언어결과실행 시간메모리
1368529kahoulA Difficult(y) Choice (BOI21_books)C++20
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>

#include "books.h"
#define int long long

using namespace std;
//
// --- Sample implementation for the task books ---
//
// To compile this program with the sample grader, place:
//     books.h books.cpp grader.cpp
// in a single folder and run:
//     g++ books.cpp grader.cpp
// in this folder.
//

map<int, int> vals;

int get (int i) {
    return vals[i] = (vals.count(i) ? vals[i] : skim(i + 1));
}

void solve(signed n, signed k, long long A, signed s) {
    int sum = 0;
    for (int i = 0; i < k; i++) {
        sum += get(i);
    }
    int max_sum = 0;
    for (int i = n - 1; i > n - k; i--) {
        max_sum += get(i);
    }

    if (sum > 2 * A || max_sum < A) {
        impossible();
        return;
    }

    int l = k - 1;
    int r = n - 1;

    while (true) {
        sum -= get(l);
        sum += get(r);
        if (sum >= A) break;
        l--;
        r--;
    }

    int a = l, b = r;
    sum -= get(r);

    while (a < b) {
        int m = (a + b) / 2;
        int cur = sum + get(m);

        if (cur >= A) b = m;
        else a = m + 1;
    }
    
    assert((A <= cur && cur <= 2 * A));

    vector<signed> ans;
    for (int i = 0; i < l; i++) {
        ans.push_back(i + 1);
    }
    for (int i = r + 1; i < n; i++) {
        ans.push_back(i + 1);
    }
    ans.push_back(a + 1);
    answer(ans);
}

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

In file included from /usr/include/c++/13/cassert:44,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:106,
                 from books.cpp:1:
books.cpp: In function 'void solve(int, int, long long int, int)':
books.cpp:60:18: error: 'cur' was not declared in this scope
   60 |     assert((A <= cur && cur <= 2 * A));
      |                  ^~~