Submission #534069

#TimeUsernameProblemLanguageResultExecution timeMemory
534069Paul_Liao_1457Intercastellar (JOI22_ho_t1)C++17
100 / 100
471 ms7268 KiB
// 還要更強 #include<iostream> #include<queue> #include<set> #include<map> #include<iomanip> #include<math.h> #include<cstring> #include<stack> #include<string.h> #include<random> #include<algorithm> #include<vector> #define ll long long #define FOR(i,a,b) for(int i=a;i<b;i++) #define REP(i,a,b) for(int i=a;i>=b;i--) #define pb push_back #define F first #define S second using namespace std; vector<ll> v,ans; ll pre[200005]; signed main(){ int n; cin>>n; v.pb(0); FOR(i,1,n+1){ int x; cin>>x; v.pb(x); } FOR(i,1,n+1){ ll tmp=v[i]; while(tmp%2==0){ tmp/=2; } ans.pb(tmp); pre[i]=pre[i-1]+v[i]/tmp; } int q; cin>>q; while(q--){ ll x; cin>>x; int l=1,r=n+1,tmp=n+1; while(l<r){ int mid=(l+r)>>1; if(pre[mid]>=x){ tmp=min(tmp,mid); r=mid; } else{ l=mid+1; } } cout<<ans[tmp-1]<<endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...