제출 #1213713

#제출 시각아이디문제언어결과실행 시간메모리
1213713MuhammadSaramWeirdtree (RMI21_weirdtree)C++20
5 / 100
10 ms1864 KiB
#include "weirdtree.h" #include <bits/stdc++.h> using namespace std; #define ll long long const int M = 1000 + 1; int n,a[M]; void initialise(int N, int Q, int h[]) { n=N; for (int i=1;i<=n;i++) a[i]=h[i]; } void cut(int l, int r, int k) { map<int,int,greater<int>> se; ll su=0,cnt=0,v; se[0]=0; for (int i=l;i<=r;i++) su+=a[i],se[a[i]]++; if (su<=k) { for (int i=l;i<=r;i++) a[i]=0; return; } su=0; for (auto [x,c]:se) { if (su-cnt*x>=k) { v=x; break; } else su+=x*c,cnt+=c; } set<int,greater<int>> id; for (int i=l;i<=r;i++) if (a[i]>v) id.insert(i); ll s=-1,e=su/cnt; while (s+1<e) { ll mid=(s+e)/2; if (su-mid*cnt>=k) s=mid; else e=mid; } for (int i:id) a[i]=s; cnt=su-cnt*s-k; for (int i:id) if (!cnt) break; else a[i]++,cnt--; } void magic(int i, int x) { a[i]=x; } long long int inspect(int l, int r) { ll ans=0; for (int i=l;i<=r;ans+=a[i],i++); return ans; }
#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...