Submission #1107329

#TimeUsernameProblemLanguageResultExecution timeMemory
1107329qwerasdfzxclTortoise (CEOI21_tortoise)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; constexpr int INF = 1e9 + 100; int a[500500]; struct Seg { int tree[2002000], lazy[2002000]; void init(int i, int l, int r, const vector<int> &V) { lazy[i] = 0; if (l==r) {tree[i] = V[l]; return;} int m = (l+r)/2; init(i<<1, l, m, V); init(i<<1|1, m+1, r, V); tree[i] = min(tree[i<<1], tree[i<<1|1]); } void propagate(int i, int l, int r) { tree[i] += lazy[i]; if (l!=r) lazy[i<<1] += lazy[i], lazy[i<<1|1] += lazy[i]; lazy[i] = 0; } void update(int i, int l, int r, int s, int e, int x) { propagate(i, l, r); if (r<s || e<l) return; if (s<=l && r<=e) { lazy[i] += x; propagate(i, l, r); return; } int m = (l+r)/2; update(i<<1, l, m, s, e, x); update(i<<1|1, m+1, r, s, e, x); tree[i] = min(tree[i<<1], tree[i<<1|1]); } int query(int i, int l, int r, int s, int e) { propagate(i, l, r); if (r<s || e<l) return INF; if (s<=l && r<=e) return tree[i]; int m = (l+r)/2; return min(query(i<<1, l, m, s, e), query(i<<1|1, m+1, r, s, e)); } }tree; int main() { int n; scanf("%d", &n); for (int i=1;i<=n;i++) scanf("%d", a+i); a[0] = a[n+1] = -1; ll ans = 0; for (int i=1;i<=n;i++) ans += max(a[i], 0); if (ans==0) { printf("0\n"); return 0; } priority_queue<array<int, 3>, vector<array<int, 3>>, greater<array<int, 3>>> pq; vector<int> V; for (int i=0,j=0;i<=n;i=j) { if (a[i]!=-1){j = i+1; continue;} j = i+1; while(j <= n && a[j]!=-1) j++; int ti = i==0?-INF:i, tj = j==n+1?INF:j; int r = -1, mx = -1, idx = -1; for (int k=i+1;k<j;k++) if (a[k] > 0) { r = k; if (mx < min(k-ti, tj-k)) { mx = min(k-ti, tj-k); idx = k; } } if (r < 0) continue; V.push_back(r-1); ans--; for (int k=i+1;k<j;k++) if (a[k] > 0){ int c = k==idx?a[k]-1:a[k]; if (c==0) continue;            if (k-ti <= tj-k) pq.push({k-ti, (int)V.size()-1, c});            else pq.push({tj-k, (int)V.size()-1, c}); } } int sz = V.size(); tree.init(1, 0, sz-1, V); while(!pq.empty()) {        auto [w, i, c] = pq.top(); pq.pop(); if (tree.query(1, 0, sz-1, i, sz-1) < w*2) continue; ans--; tree.update(1, 0, sz-1, i, sz-1, -w*2);        if (c > 1) pq.push({w, i, c-1}); } printf("%lld\n", ans); }

Compilation message (stderr)

tortoise.cpp:94:2: error: extended character   is not valid in an identifier
   94 |             if (k-ti <= tj-k) pq.push({k-ti, (int)V.size()-1, c});
      |  ^
tortoise.cpp:94:5: error: extended character   is not valid in an identifier
   94 |             if (k-ti <= tj-k) pq.push({k-ti, (int)V.size()-1, c});
      |    ^
tortoise.cpp:94:8: error: extended character   is not valid in an identifier
   94 |             if (k-ti <= tj-k) pq.push({k-ti, (int)V.size()-1, c});
      |      ^
tortoise.cpp:94:11: error: extended character   is not valid in an identifier
   94 |             if (k-ti <= tj-k) pq.push({k-ti, (int)V.size()-1, c});
      |        ^
tortoise.cpp:94:14: error: extended character   is not valid in an identifier
   94 |             if (k-ti <= tj-k) pq.push({k-ti, (int)V.size()-1, c});
      |          ^
tortoise.cpp:94:17: error: extended character   is not valid in an identifier
   94 |             if (k-ti <= tj-k) pq.push({k-ti, (int)V.size()-1, c});
      |            ^
tortoise.cpp:95:2: error: extended character   is not valid in an identifier
   95 |             else pq.push({tj-k,  (int)V.size()-1, c});
      |  ^
tortoise.cpp:95:5: error: extended character   is not valid in an identifier
   95 |             else pq.push({tj-k,  (int)V.size()-1, c});
      |    ^
tortoise.cpp:95:8: error: extended character   is not valid in an identifier
   95 |             else pq.push({tj-k,  (int)V.size()-1, c});
      |      ^
tortoise.cpp:95:11: error: extended character   is not valid in an identifier
   95 |             else pq.push({tj-k,  (int)V.size()-1, c});
      |        ^
tortoise.cpp:95:14: error: extended character   is not valid in an identifier
   95 |             else pq.push({tj-k,  (int)V.size()-1, c});
      |          ^
tortoise.cpp:95:17: error: extended character   is not valid in an identifier
   95 |             else pq.push({tj-k,  (int)V.size()-1, c});
      |            ^
tortoise.cpp:103:2: error: extended character   is not valid in an identifier
  103 |         auto [w, i, c] = pq.top(); pq.pop();
      |  ^
tortoise.cpp:103:5: error: extended character   is not valid in an identifier
  103 |         auto [w, i, c] = pq.top(); pq.pop();
      |    ^
tortoise.cpp:103:8: error: extended character   is not valid in an identifier
  103 |         auto [w, i, c] = pq.top(); pq.pop();
      |      ^
tortoise.cpp:103:11: error: extended character   is not valid in an identifier
  103 |         auto [w, i, c] = pq.top(); pq.pop();
      |        ^
tortoise.cpp:107:2: error: extended character   is not valid in an identifier
  107 |         if (c > 1) pq.push({w, i, c-1});
      |  ^
tortoise.cpp:107:5: error: extended character   is not valid in an identifier
  107 |         if (c > 1) pq.push({w, i, c-1});
      |    ^
tortoise.cpp:107:8: error: extended character   is not valid in an identifier
  107 |         if (c > 1) pq.push({w, i, c-1});
      |      ^
tortoise.cpp:107:11: error: extended character   is not valid in an identifier
  107 |         if (c > 1) pq.push({w, i, c-1});
      |        ^
tortoise.cpp: In function 'int main()':
tortoise.cpp:94:2: error: '\U000000a0' was not declared in this scope
   94 |             if (k-ti <= tj-k) pq.push({k-ti, (int)V.size()-1, c});
      |  ^
tortoise.cpp:94:71: error: expected primary-expression before ')' token
   94 |             if (k-ti <= tj-k) pq.push({k-ti, (int)V.size()-1, c});
      |                                                                 ^
tortoise.cpp:95:4: error: expected ';' before '\U000000a0'
   95 |             else pq.push({tj-k,  (int)V.size()-1, c});
      |   ^~
      |   ;
tortoise.cpp:95:59: error: expected primary-expression before ')' token
   95 |             else pq.push({tj-k,  (int)V.size()-1, c});
      |                                                     ^
tortoise.cpp:103:2: error: '\U000000a0' was not declared in this scope
  103 |         auto [w, i, c] = pq.top(); pq.pop();
      |  ^
tortoise.cpp:104:36: error: 'i' was not declared in this scope
  104 |         if (tree.query(1, 0, sz-1, i, sz-1) < w*2) continue;
      |                                    ^
tortoise.cpp:104:47: error: 'w' was not declared in this scope
  104 |         if (tree.query(1, 0, sz-1, i, sz-1) < w*2) continue;
      |                                               ^
tortoise.cpp:106:33: error: 'i' was not declared in this scope
  106 |         tree.update(1, 0, sz-1, i, sz-1, -w*2);
      |                                 ^
tortoise.cpp:106:43: error: 'w' was not declared in this scope
  106 |         tree.update(1, 0, sz-1, i, sz-1, -w*2);
      |                                           ^
tortoise.cpp:107:4: error: expected ';' before '\U000000a0'
  107 |         if (c > 1) pq.push({w, i, c-1});
      |   ^~
      |   ;
tortoise.cpp:107:43: error: expected primary-expression before ')' token
  107 |         if (c > 1) pq.push({w, i, c-1});
      |                                       ^
tortoise.cpp:55:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   55 |     scanf("%d", &n);
      |     ~~~~~^~~~~~~~~~
tortoise.cpp:57:33: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   57 |     for (int i=1;i<=n;i++) scanf("%d", a+i);
      |                            ~~~~~^~~~~~~~~~~