题目:http://codeforces.com/contest/888/problem/E

一看就是折半搜索?……然后排序双指针。

两个<m的数加起来如果>=m,一定不会更新答案。因为-m后的值比原来的两个数都小(a+b-m<a+m-m),不如它们去加0;

而如果两个数加起来<m,值比它们都大,可能更新答案。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=,M=;
int n,m,jx,a[N],b[M],t1,c[M],t2,ans;
int up(int a,int b){a+=b;a>=m?a-=m:;return a;}
void dfs(int cr,int lm,int lj,bool fx)
{
if(cr>lm)
{
fx?b[++t1]=lj:c[++t2]=lj;
return;
}
dfs(cr+,lm,lj,fx);
dfs(cr+,lm,up(lj,a[cr]),fx);
}
int main()
{
scanf("%d%d",&n,&m); jx=n>>;
for(int i=;i<=n;i++)scanf("%d",&a[i]),a[i]%=m;
dfs(,jx,,); dfs(jx+,n,,);
sort(b+,b+t1+); t1=unique(b+,b+t1+)-b-;
sort(c+,c+t2+); t2=unique(c+,c+t2+)-c-;
int p0=t2;
for(int i=;i<=t1;i++)
{
while(b[i]+c[p0]>=m)p0--;
ans=max(ans,b[i]+c[p0]);
}
printf("%d\n",ans);
return ;
}

最新文章

  1. HDU 4041 Eliminate Witches! --模拟
  2. python 字符串格式化 (%操作符)
  3. 51nod1379 索函数
  4. TensorFlow学习之运行label_image实例
  5. 数学:lucas定理的总结
  6. android SDK开发 -- TitleBar封装(一)
  7. html2canvas截屏用法
  8. Jdk1.6编译,1.7执行,1.7中没有需要的类,为何不会报错
  9. 奇怪的跨域访问:No &#39;Access-Control-Allow-Origin&#39; header
  10. 常见问题2:html+css效果综合整理
  11. ABP框架系列之三十五:(MVC-Controllers-MVC控制器)
  12. CSS 居中布局
  13. Linux命令之sed
  14. PAT 1081 检查密码(15) (代码+思路)
  15. TCxGrid 把列移上移下。
  16. iOS开发--NSDateFormatter
  17. MySQL Crash Course #11# Chapter 20. Updating and Deleting Data
  18. week4a:个人博客作业
  19. 关于Jquery使用中遇到典型问题集锦
  20. 实战MEF(1)一种不错的扩展方式

热门文章

  1. php 源码编译
  2. jQeury入门:遍历
  3. Unity开发规范(个人习惯,仅供參考)
  4. C语言-二维背包问题
  5. selenium之 chromedriver与chrome版本映射表(更新至v2.29)
  6. C/C++,java开源数学计算库
  7. JavaScript读书笔记(1)
  8. JS/PHP字符串截取
  9. c#生成试卷。。。
  10. windows下使用ofstream默认输出内存数据到文件中时,会自动将0A换成0A0D