Submission #1257032

#TimeUsernameProblemLanguageResultExecution timeMemory
1257032terracottaliteGrowing Trees (BOI11_grow)C++20
0 / 100
1096 ms1092 KiB
#include <stdio.h> #include <algorithm> using namespace std; const int N = 100005; int n, m; int b[N] = { 0 }; int a[N] = { 0 }; void update(int p, int v) { while (p <= n) { b[p] += v; p += p&-p; } } int query(int r) { int res = 0; while (r > 0) { res += b[r]; r -= r&-r; } return res; } int bs(int h) { int l = 0; int r = n+1; while (r-l>1) { int m = (l+r)/2; if (query(m) < h) { l = m; } else { r = m; } } return r; } int main() { scanf("%d %d", &n, &m); for (int i=1;i<=n;i++) { scanf("%d", &a[i]); } sort(a+1, a+n+1); for (int i=1;i<=n;i++) { update(i, a[i]-a[i-1]); } /* map<int, int> mp; for (int i=n;i>0;i--) { mp[a[i]] = i; } */ char ty[4]; while (m--) { scanf("%s", ty); if (ty[0] == 'F') { int c, h; scanf("%d %d", &c, &h); int r = bs(h); if (query(r) != query(r+c)) { update(r, 1); } int lm = bs(query(r+c)+1)-1; int nm = bs(query(r+c)); int nc = c-(nm-r); update(nm, -1); update(lm+1, -1); update(lm-nc+1, 1); //printf("%d %d %d %d\n", r ,lm ,nm, nc); /* putchar('x'); for (int i=1;i<=n;i++) { printf(" %d", query(i)); } putchar('\n'); */ } else { int l, r; scanf("%d %d", &l, &r); printf("%d\n", bs(r+1) - bs(l)); } } }

Compilation message (stderr)

grow.cpp: In function 'int main()':
grow.cpp:44:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   44 |         scanf("%d %d", &n, &m);
      |         ~~~~~^~~~~~~~~~~~~~~~~
grow.cpp:47:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   47 |                 scanf("%d", &a[i]);
      |                 ~~~~~^~~~~~~~~~~~~
grow.cpp:66:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   66 |                 scanf("%s", ty);
      |                 ~~~~~^~~~~~~~~~
grow.cpp:70:30: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   70 |                         scanf("%d %d", &c, &h);
      |                         ~~~~~^~~~~~~~~~~~~~~~~
grow.cpp:97:30: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   97 |                         scanf("%d %d", &l, &r);
      |                         ~~~~~^~~~~~~~~~~~~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...