栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 2886 Who Gets the Most Ca...

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 2886 Who Gets the Most Ca...

#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;const int N=510010;int a[]={1,2,4,6,12,24,36,48,60,120,180,240,360,720,840,  1260,1680,2520,5040,7560,10080,15120,20160,25200,  27720,45360,50400,55440,83160,110880,166320,221760,  277200,332640,498960,554400,665280};int b[]={1,2,3,4,6,8,9,10,12,16,18,20,24,30,32,36,40,48,60,  64,72,80,84,90,96,100,108,120,128,144,160,168,180,192,200,216,224};char name[N][15];int s[N];int n,k;struct sgtree{int l,r,sum;}tr[N*4];void build(int p,int l,int r){tr[p].l=l,tr[p].r=r;if(l==r){tr[p].sum=1;return;}int mid=(l+r)/2;build(p*2,l,mid);build(p*2+1,mid+1,r);tr[p].sum=tr[p*2].sum+tr[p*2+1].sum;}int change(int p,int x){tr[p].sum--;if(tr[p].l==tr[p].r)return tr[p].l;if(tr[p*2].sum>=x)return change(p*2,x);return change(p*2+1,x-tr[p*2].sum); }int main(){while(scanf("%d%d",&n,&k)!=EOF){for(int i=1;i<=n;i++)scanf("%s%d",name[i],&s[i]);int pos=0,ans=0,t=0,id=0;while(a[pos]<=n)pos++;ans=b[pos-1],t=a[pos-1];build(1,1,n);while(t--){n--;id=change(1,k);if(!n)break;if(s[id]>=0)k=(k-1+s[id]-1)%n+1;else k=((k-1+s[id])%n+n)%n+1;}printf("%s %dn",name[id],ans);}    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/378554.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号