登录
ljxx_xuhengyi的博客
博客
ljxx_xuhengyi
导航
日志
关于我
YYOJ
CodeGolf
2024-07-12 15:19:12
By
ljxx_xuhengyi
挑战:用C++写出2024暑期真题小测2的各题的最短正解
目前记录:
A:
B:
C:
D:
E:
评论
ljxx_xuhengyi
需附提交记录
2024-07-12 15:28:50
回复
ljxx_xuhengyi
@caxx_shaozenan
@ljxx_wangweizhe
@dfdf_luyanlin
@syxx_luoxuanhao
@snxx_lvboyuan
@syyx_zhangshihao
@syxx_zhangyifan
@dfdf_xuziye
@dfdf_maoshenxing
@dfdf_zhaozekai
2024-07-13 09:16:00
回复
syxx_zhangyifan
T5 #include<bits/stdc++.h> using namespace std; int a[4000005],b[4000005],n; long long v[4000005],s[4000005],sum,m,ans; map<int ,int>imap; int lowbit(int x){ return x&-x; } void change(int ct,long long x){ for(;ct<=m;ct+=lowbit(ct))s[ct]+=x; } long long query(int ct){ long long res=0; for(;ct;ct-=lowbit(ct))res+=s[ct]; return res; } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin>>n; for(int i=1;i<=n;i++){ cin>>v[i]>>a[i]; b[i]=v[i]; } sort(b+1,b+n+1); m=unique(b+1,b+1+n)-(b+1); for(int i=1;i<=m;i++)imap[b[i]]=i; int i=1; while(n--){ change(imap[v[i]],a[i]); sum+=a[i]; int l=1,r=m,mid; while(l<=r){ mid=(l+r)/2; if(query(mid)>=(sum+1)/2)r=mid-1,ans=mid; else l=mid+1; } cout<<b[ans]<<endl; ++i; } }
2024-07-13 09:18:17
回复
ljxx_xuhengyi
@syxx_zhangyifan
等订正开了再过来
2024-07-13 09:19:56
回复
ljxx_xuhengyi
需附提交记录
2024-07-13 09:20:02
回复