山东省第一届ACM大学生程序设计竞赛 problem D Greatest Number
2016-10-29 16:37
337 查看
//二分法
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> using namespace std; int a[1001009],m,max1; int n; int main() { int k,cnt=1; while(scanf("%d%d",&n,&m)&&n) { for(int i=0;i<n;i++) { scanf("%d",&a[i]); if(a[i]>m) { i--;n--; } } k=n; for(int i=0;i<n;i++) for(int j=0;j<n;j++) a[k++]=a[i]+a[j]; sort(a,a+k); int l=0,r,mid,flag=0; max1=0; for(int i=0;i<k;i++) { //int sum=0; l=i; r=k-1; max1=max1>a[i]?max1:a[i]; while(l<=r) { mid=r+l; mid/=2; if(a[mid]+a[i]<m) { max1=max1>(a[mid]+a[i])?max1:(a[mid]+a[i]); l=mid+1; } else if(a[mid]+a[i]==m) { flag=1; max1=m; break; } else if(a[mid]+a[i]>m) { r=mid-1; } } if(flag==1)break; } printf("Case %d: %d\n\n",cnt++, max1); } return 0; }
相关文章推荐
- 山东省第一届ACM大学生程序设计竞赛 Greatest Number 二分查找
- SDUT 2157 Greatest Number (二分) 2010年山东省第一届ACM大学生程序设计竞赛
- 2010年山东省第一届ACM大学生程序设计竞赛——Greatest Number
- 山东省第一届ACM大学生程序设计竞赛--Greatest Number--二分
- 山东省第一届ACM大学生程序设计竞赛 problemG Shopping
- SDUT 2151 Phone Number 2010年山东省第一届ACM大学生程序设计竞赛
- [2010山东省第一届ACM大学生程序设计竞赛]——Hello World!
- Phone Number 2010年山东省第一届ACM大学生程序设计竞赛
- 山东省第一届ACM大学生程序设计竞赛 hello world! 水模拟
- Phone Number 2010年山东省第一届ACM大学生程序设计竞赛
- 山东省第四届ACM大学生程序设计竞赛 The number of steps 概率dp
- 2010年山东省第一届ACM大学生程序设计竞赛——Emergency
- 2010年山东省第一届ACM大学生程序设计竞赛——Shopping
- 2010年山东省第一届ACM大学生程序设计竞赛——Balloons
- Hello World! 2010年山东省第一届ACM大学生程序设计竞赛
- 山东省第一届ACM大学生程序设计竞赛(原题) Ivan comes again!
- 山东省第一届ACM大学生程序设计竞赛 Fairy tale 大模拟
- 2010年山东省第一届ACM大学生程序设计竞赛——Fairy tale
- Hello World! 2010年山东省第一届ACM大学生程序设计竞赛
- 山东省第一届ACM大学生程序设计竞赛 Balloons dfs搜索