PAT (Advanced Level) 1048. Find Coins (25)
2016-05-25 14:46
465 查看
先对序列排序,然后枚举较小值,二分较大值。
#include<iostream> #include<cstring> #include<cmath> #include<algorithm> #include<cstdio> #include<map> #include<queue> #include<string> #include<vector> using namespace std; const int maxn=100000+10; int a[maxn]; int n,k; int main() { scanf("%d%d",&n,&k); for(int i=1;i<=n;i++) scanf("%d",&a[i]); sort(a+1,a+1+n); int Find=0; for(int i=1;i<=n;i++) { int l=i+1,r=n; while(l<=r) { int mid=(l+r)/2; if(a[mid]>k-a[i]) r=mid-1; else if(a[mid]<k-a[i]) l=mid+1; else {Find=1;break;} } if(Find==1) { printf("%d %d\n",a[i],k-a[i]); break; } } if(Find==0) printf("No Solution\n"); return 0; }
相关文章推荐
- json handle
- [Cacti] memcache安装运行、cacti监控memcache实战
- GStreamer基础教程03——动态pipeline
- HDU 1003 Max Sum (O(N) 算法)
- Spark组件之GraphX学习9--使用pregel函数求单源最短路径
- 阿里云服务器Ubuntu安装mysql
- iostat来对linux硬盘IO性能进行了解
- DATETIME类型和BIGINT 类型互相转换
- php时间
- UVa 10474 Where is the Marble?
- jQuery插件
- apusic7配置2
- 测试下载
- shell之入门篇
- 328. Odd Even Linked List #Medium
- 剑指Offer——之字形打印二叉树
- 边长、边数可配置的旋转多面体
- Java泛型中遇到的协变问题
- select count(*)
- 实现选择排序算法