# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
199454 | TadijaSebez | Growing Trees (BOI11_grow) | C++11 | 171 ms | 3448 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
const int N=100050;
int bit[N];
void Add(int i,int f){for(;i<N;i+=i&-i)bit[i]+=f;}
void Add(int l,int r,int f){Add(l,f);Add(r+1,-f);}
int Get(int i){int ans=0;for(;i;i-=i&-i)ans+=bit[i];return ans;}
int a[N];
int main(){
int n,m;
scanf("%i %i",&n,&m);
for(int i=1;i<=n;i++)scanf("%i",&a[i]);
sort(a+1,a+1+n);
for(int i=1;i<=n;i++)Add(i,i,a[i]);
while(m--){
char t;
scanf("\n%c",&t);
if(t=='F'){
int c,h;
scanf("%i %i",&c,&h);
int top=n,bot=1,mid,ans=n+1;
while(top>=bot){
mid=top+bot>>1;
if(Get(mid)>=h)ans=mid,top=mid-1;
else bot=mid+1;
}
int L=ans,R=min(n,ans+c-1);
top=R,bot=1;
int le=R;
while(top>=bot){
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |