题目:https://loj.ac/problem/6432

如果不选自己,设自己的值是 x ,需要让 “ a<x && 2*a>=x ” 的非 x 的值不被选;如果选自己,需要让 “ a>=x && 2*a<x ” 的非 x 的值被选。

注意是 “非 x ” 的值。

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
int rdn()
{
int ret=;bool fx=;char ch=getchar();
while(ch>''||ch<''){if(ch=='-')fx=;ch=getchar();}
while(ch>=''&&ch<='')ret=ret*+ch-'',ch=getchar();
return fx?ret:-ret;
}
const int N=1e5+,mod=;
int upt(int x){while(x>=mod)x-=mod;while(x<)x+=mod;return x;}
int pw(int x,int k)
{int ret=;while(k){if(k&)ret=(ll)ret*x%mod;x=(ll)x*x%mod;k>>=;}return ret;} int n,k,a[N],b[N],jc[N],jcn[N];
bool cmp(int a,int b){return a>b;}
void init()
{
jc[]=;for(int i=;i<=n;i++)jc[i]=(ll)jc[i-]*i%mod;
jcn[n]=pw(jc[n],mod-);
for(int i=n-;i>=;i--)jcn[i]=(ll)jcn[i+]*(i+)%mod;
}
int C(int n,int m)
{
if(n<m)return ;
return (ll)jc[n]*jcn[m]%mod*jcn[n-m]%mod;
}
int cal(int x)//a<x&&2*a>=x
{
int l=,r=n,L=n+;
while(l<=r)
{
int mid=l+r>>;
if(b[mid]>=x)l=mid+;
else if(*b[mid]<x)r=mid-;
else L=mid,r=mid-;
}
l=; r=n; int R=;
while(l<=r)
{
int mid=l+r>>;
if(b[mid]>=x)l=mid+;
else if(*b[mid]<x)r=mid-;
else R=mid,l=mid+;
}
if(L<=R) return R-L+; return ;
}
int cal2(int x)//a>=x&&a<2*x
{
int l=,r=n,x2=*x,L=n+;
while(l<=r)
{
int mid=l+r>>;
if(b[mid]<x)r=mid-;
else if(b[mid]>=x2)l=mid+;
else L=mid,r=mid-;
}
l=; r=n; int R=;
while(l<=r)
{
int mid=l+r>>;
if(b[mid]<x)r=mid-;
else if(b[mid]>=x2)l=mid+;
else R=mid,l=mid+;
}
if(x<x2)R--;//self
if(L<=R) return R-L+; return ;
}
int main()
{
n=rdn();k=rdn();
for(int i=;i<=n;i++)
a[i]=b[i]=rdn();
sort(b+,b+n+,cmp); init();
for(int i=;i<=n;i++)
{
int ct=cal(a[i]),ans=;
ans=C(n-ct-,k);
ct=cal2(a[i]);
if(ct<k)ans=upt(ans+C(n-ct-,k-ct-));
printf("%d\n",ans);
}
return ;
}

最新文章

  1. C++数组实现的循环队列
  2. 作业二:Github注册账户过程
  3. buildroot 添加ssh,以及使用stftp 服务
  4. 由简入繁实现Jquery树状结构
  5. 【Spring学习笔记-1】Myeclipse下Spring环境搭建
  6. 将centos系统中的网卡em1还原为eth0
  7. 安装php时,make步骤报错make: *** [ext/gd/gd.lo] Error 1
  8. CentOS安装搜狗词库
  9. 从并发处理谈PHP进程间通信(二)System V IPC
  10. 【WEB API项目实战干货系列】- API访问客户端(WebApiClient适用于MVC/WebForms/WinForm)(四)
  11. BZOJ3223/洛谷P3391 - 文艺平衡树
  12. 373. Find K Pairs with Smallest Sums (java,优先队列)
  13. C++:多态浅析
  14. iOS7中修改StatusBar的显示颜色
  15. 【环境配置】配置ndk
  16. iOS APP 新增表情包拓展
  17. Maven 修改默认JDK版本
  18. python 数据分析 Matplotlib常用图表
  19. 【spring data jpa】jpa中使用in查询或删除 在@Query中怎么写 ,报错:org.springframework.expression.spel.SpelEvaluationException: EL1007E: Property or field &#39;goodsConfigUid&#39; cannot be found on null 怎么处理
  20. datagridview 日期列排序

热门文章

  1. mybatis缓存机制(转)
  2. 正则表达式从入门到放弃「Java」
  3. Python分布式爬虫必学框架Scrapy打造搜索引擎 学习教程
  4. mybatis配置mapper.xml 的基本操作
  5. let/const及块级作用域
  6. 凸包模板——Graham扫描法
  7. CVE-2013-2094 porting to x86-32 分析
  8. SQL 一次插入多次数据
  9. Error: Chunk.entrypoints: Use Chunks.groupsIterable and filter by instanceof Entrypoint instead
  10. TCP为什么会采用三次握手,若采用二次握手可以吗?