题目链接

注意题目中给的顺序是顺时针的,所以在数组中应该是倒着存的。左就是顺时针,右就是逆时针。各种调试之后,终于A了,很多种情况考虑情况。

 #include <cstring>
#include <cstdio>
#include <string>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
char name[][];
int o[];
int p[];
int s[];
int n;
int lowbit(int t)
{
return t&(-t);
}
void insert(int t,int d)
{
while(t <= n)
{
p[t] += d;
t += lowbit(t);
}
}
int getsum(int t)
{
int sum = ;
while(t > )
{
sum += p[t];
t -= lowbit(t);
}
return sum;
}
int find(int x)
{
int str,mid,end,temp;
str = ;end = n;
while(str < end)
{
mid = (str+end)/;
temp = getsum(mid);
if(temp < x)
str = mid + ;
else
end = mid;
}
return str;
}
int main()
{
int i,k,j,maxz,sum,sl,sr,key;
while(scanf("%d%d",&n,&k)!=EOF)
{
for(i = n; i >= ; i --)
{
scanf("%s%d",name[i],&s[i]);
}
for(i = ;i <= n;i ++)
{
p[i] = ;
o[i] = ;
}
for(i = ;i <= n;i ++)
{
for(j = i;j <= n;j += i)
{
o[j] ++;
}
}
maxz = ;
key = ;
for(i = ;i <= n;i ++)
{
if(maxz < o[i])
{
maxz = o[i];
key = i;
}
}
for(i = ; i <= n; i ++)
{
insert(i,);
}
k = n - k + ;
insert(k,-);
sum = n-;
for(i = ;i <= key;i ++)
{
sl = getsum(k);
sr = sum - sl;
if(s[k] > )
{
s[k] = s[k]%sum;
if(s[k] == ) s[k] = sum;
if(sl >= s[k])
k = find(sl-s[k]+);
else
k = find(sum-(s[k]-sl)+);
}
else
{
s[k] = -s[k];
s[k] = (s[k])%sum;
if(s[k] == ) s[k] = sum;
if(sr >= s[k])
k = find(sl+s[k]);
else
k = find(s[k]-sr);
}
insert(k,-);
sum --;
}
printf("%s %d\n",name[k],o[key]+);
}
return ;
}

最新文章

  1. collection of vim vim tutorial for beginner
  2. 在Mongoose中使用嵌套的populate处理数据
  3. A/B 测试之前必须要了解的 10 件事
  4. Github Bash
  5. markdown下编辑latex数学公式
  6. IDEA14 Ultimate Edition注册码
  7. tap,touch,touchstart,事件与click事件的区别
  8. java自动化测试-http请求结合抓包工具实际应用
  9. 设置radio选中
  10. FINS/TCP_OMRON(1)
  11. ubuntu18.04静态ip设置
  12. Hadoop学习笔记01_Hadoop搭建
  13. thinkphp 随笔
  14. oracle 锁表查看与解锁
  15. MATLAB 的函数句柄
  16. opencv图片转幻灯片视频
  17. C# 通过Exchange server 发送邮件
  18. Castle ActiveRecord学习(八)事务
  19. C#枚举(enum)、常量(const)和readonly
  20. java代码用户界面网格布局GridLayout.划分为格子区域

热门文章

  1. [android篇]声明权限
  2. Git x SVN rebase事故
  3. nginx反向代理+负载均衡+https
  4. shell的for循环
  5. 【bzoj4408】[Fjoi 2016]神秘数 主席树
  6. BZOJ 1443 [JSOI2009]游戏Game ——博弈论
  7. uva 10090 二元一次不定方程
  8. *AtCoder Regular Contest 096F - Sweet Alchemy
  9. Maven单元测试
  10. 使用fastJson把对象转字符串首字母大小写问题的解决