Submission #1262240

#TimeUsernameProblemLanguageResultExecution timeMemory
1262240imannCircus (Balkan15_CIRCUS)C++20
11 / 100
63 ms12472 KiB
#include <iostream>
#include <array>
#include <queue>
#include <algorithm>
#include <limits>
#include <map>
#include <vector>

const int MAX_N = 1000*100+2;

std::map<int, int> toMinAfter;
std::vector<int> minAftersKeys;

void init(int N, int M, int P[]) {
    std::priority_queue<std::pair<int, bool>> elements;
    for (int i = 0; i < N; ++i) {
        elements.push({P[i], true});
    }

    std::priority_queue<std::pair<int, int>> minPQ;
    toMinAfter[M] = M;
    int minAfter = M;
    while (!elements.empty()) {
        auto [node, exist] = elements.top();
        elements.pop();
        while (!minPQ.empty() && minPQ.top().first >= node) {
            minAfter = std::min(minAfter, minPQ.top().second);
            minPQ.pop();
        }
        toMinAfter[node] = minAfter;
        if (exist) {
            int idx = 2 * node - minAfter;
            if (idx >= 0) {
                elements.push({idx, false});
                minPQ.push({idx, node});
            }
        }
    }
    for (auto [k, v] : toMinAfter) {
        minAftersKeys.push_back(k);
    }
    std::sort(minAftersKeys.begin(), minAftersKeys.end());
}

int minLength(int D) {
    auto it = std::lower_bound(minAftersKeys.begin(), minAftersKeys.end(), D);
    return toMinAfter[*it] - D;
}

Compilation message (stderr)

grader.cpp: In function 'int main()':
grader.cpp:16:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   16 |         scanf("%d%d", &N, &M);
      |         ~~~~~^~~~~~~~~~~~~~~~
grader.cpp:18:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   18 |                 scanf("%d", &P[i]);
      |                 ~~~~~^~~~~~~~~~~~~
grader.cpp:21:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   21 |         scanf("%d", &Q);
      |         ~~~~~^~~~~~~~~~
grader.cpp:23:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   23 |                 scanf("%d", &d);
      |                 ~~~~~^~~~~~~~~~
#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...