Submission #1187369

#TimeUsernameProblemLanguageResultExecution timeMemory
11873690x34cCircus (Balkan15_CIRCUS)C++20
0 / 100
31 ms26944 KiB
#include "circus.h" #define ll long long #define pii pair<int, int> #include <bits/stdc++.h> using namespace std; int gN, gM; const int MAX_N = 1000010, MAX_Q = 1000010; vector<pair<int, pii>> arr[MAX_N]; int indexik[MAX_N]; pii get_item(int idx, int t) { int l = 0, r = arr[idx].size() - 1; int lb = -1; while (l <= r) { int m = l + (r - l) / 2; if (arr[idx][m].first >= t) { lb = m; l = m + 1; } else r = m - 1; } return arr[idx][lb].second; } void update_item(int idx, int t, pii val) { arr[idx].push_back({t, val}); } int dp[MAX_N], iarr[MAX_N]; void init(int N, int M, int P[]) { gN = N; gM = M; for (int i = 0; i < N; i++) iarr[i] = P[i]; update_item(N, N, {M, M}); dp[N] = 0; int idx = N; indexik[N] = idx; for (int i = N - 1; i >= 0; i--) { int l = idx, r = N; int lb = M; while (l <= r) { int m = l + (r - l) / 2; pii item = get_item(m, i); if (P[i] <= item.first) { lb = item.second; r = m - 1; } else l = m + 1; } dp[i] = lb - P[i]; while (get_item(idx, i).first <= P[i] - dp[i]) idx++; --idx; update_item(idx, i, {P[i] - dp[i], P[i]}); indexik[i] = idx; } } int minLength(int D) { int l = 0, r = gN; int lb = gN; while (l <= r) { int m = l + (r - l) / 2; if (iarr[m] >= D) { lb = m; r = m - 1; } else l = m + 1; } int i = lb; int idx = indexik[i]; l = idx; r = gN; lb = gM; while (l <= r) { int m = l + (r - l) / 2; pii item = get_item(m, i); if (D <= item.first) { lb = item.second; r = m - 1; } else l = m + 1; } return lb - 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...