Submission #1067191

#TimeUsernameProblemLanguageResultExecution timeMemory
1067191duckindogA Difficult(y) Choice (BOI21_books)C++17
10 / 100
2 ms1364 KiB
#include <bits/stdc++.h>
 
#include "books.h"
 
using namespace std;
 
void solve(int n, int k, long long a, int s) {
  vector<long long> x(n + 1);
  vector<int> ret;

  { //consecutive
    auto get = [&](int l, int r) { 
      long long total = 0;
      for (int i = l; i <= r; ++i) {
        if (!x[i]) x[i] = skim(i);
        total += x[i];
      }
      return total;
    };

    int l = k, r = n;
    while (l <= r) { 
      int mid = l + r >> 1;

      auto value = get(mid - k + 1, mid);
      if (a <= value && value <= 2 * a) { 
        for (int i = mid - k + 1; i <= mid; ++i) ret.push_back(i);
        answer(ret);
        return;
      }

      if (value < a) l = mid + 1;
      else r = mid - 1;
    }
  }

  { // k - 1
    int total = 0;
    for (int i = 1; i < k; ++i) { 
      if (!x[i]) x[i] = skim(i);
      total += x[i];
    }

    auto get = [&](int i) { 
      if (!x[i]) x[i] = skim(i);
      return total + x[i];
    };

    int l = k, r = n;
    while (l <= r) { 
      int mid = l + r >> 1;

      auto value = get(mid);
      if (a <= value && value <= 2 * a) { 
        for (int i = mid - k + 1; i <= mid; ++i) ret.push_back(i);
        answer(ret);
        return;
      }

      if (value < a) l = mid + 1;
      else r = mid - 1;
    }
  }
  impossible();
}

Compilation message (stderr)

books.cpp: In function 'void solve(int, int, long long int, int)':
books.cpp:23:19: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   23 |       int mid = l + r >> 1;
      |                 ~~^~~
books.cpp:51:19: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   51 |       int mid = l + r >> 1;
      |                 ~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...