Submission #938630

#TimeUsernameProblemLanguageResultExecution timeMemory
938630vjudge1Intercastellar (JOI22_ho_t1)C++17
100 / 100
463 ms7748 KiB
#include <bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
vector<int>prefix;
int binarysearch(int i){
    int r=prefix.size();
    int l=0;
    while(l<r){
        if(l==r-1){
            if(prefix[r]<=i)return r;
            else return l;
        }
        int m=(l+r)/2;
        if(prefix[m]==i)return m;
        if(prefix[m]>i)
            r=m;
        else 
            l=m;
    }
}
pair<int,int> power(int i){
    int ans=1;
    while(i%ans==0){
        ans*=2;
    }
    ans/=2;
    i=i/ans;
    return make_pair(ans,i);
}
signed main(){
    int n,q;
    cin>>n;
    int sum=1;
    vector<int>v;
    prefix.push_back(sum);
    for(int i=0;i<n;i++){
        int a;
        cin>>a;
        pair<int,int>b=power(a);
        sum+=b.first;
        prefix.push_back(sum);
        v.push_back(b.second);
    }
    
    cin>>q;
    for(int i=0;i<q;i++){
        int b;
        cin>>b;
        int index=binarysearch(b);
        cout<<v[index]<<endl;
    }
}

Compilation message (stderr)

Main.cpp: In function 'long long int binarysearch(long long int)':
Main.cpp:21:1: warning: control reaches end of non-void function [-Wreturn-type]
   21 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...