C++:Find Coins

Eva 喜欢收集来自宇宙各地的硬币,包括火星等其他星球的硬币。一天她来到一家可以接受各种硬币支付的商场。但这里对付款有特殊要求:每笔账单必须恰好使用两枚硬币来支付精确金额。由于她带了多达 105105 枚硬币,她需要你的帮助。对于任意给定的支付金额,你需要告诉她是否能找到两枚硬币来支付。

输入规格:

每个输入文件包含一个测试用例。每个测试用例的第一行包含两个正整数:NN(≤105≤105,表示硬币总数)和 MM(≤103≤103,表示需支付的金额)。第二行包含 NN 个硬币面值,均为不超过 500 的正整数。行内数字以空格分隔。

输出规格:

对于每个测试用例,输出一行:若存在两枚硬币面值 V1V1​ 和 V2V2​(V1+V2=MV1​+V2​=M 且 V1≤V2V1​≤V2​),则输出 V1 V2V1​V2​。若有多种方案,则输出 V1V1​ 最小的那一对;若无方案,则输出 No Solution

样例输入 1:

复制代码
8 15
1 2 8 7 2 4 11 15

样例输出 1:

复制代码
4 11

样例输入 2:

复制代码
7 14
1 8 7 2 4 11 15

样例输出 2:

复制代码
No Solution

代码:

cpp 复制代码
#include <iostream>
#include <bits/stdc++.h>
#include <cstring>
#include <iomanip>
using namespace std;
vector<int> v;
bool cmp(int a,int b){
    return a<b;
}
int main(){
    int n,m;cin>>n>>m;
    for(int i=0;i<n;++i){
        int k;cin>>k;v.push_back(k);
    }
    sort(v.begin(),v.end(),cmp);
    int flag=0;
    int l=0,r=n-1;
    while(l<r){
        int s=v[l]+v[r];
        if(s<m)l++;
        else if(s>m)r--;
        else{
            cout<<v[l]<<" "<<v[r];
            flag=1;
            break;
        }
    }
    if(!flag)cout<<"No Solution"<<endl;
    return 0;
}
相关推荐
nianniannnn7 分钟前
c++复习自存--标准模板库STL
开发语言·c++·windows
努力努力再努力wz16 分钟前
【高性能网络库与HTTP Server系列】:基于主从 Reactor 模型实现高性能 C++ 网络库与 HTTP Server
开发语言·网络·数据结构·数据库·c++·网络协议·http
Robot_Nav31 分钟前
C++ 面试常问问题汇总:基础语法、面向对象、STL、多线程与设计模式
c++·设计模式·面试
盐焗鹌鹑蛋1 小时前
【C++】二叉搜索树
c++
哎呦,帅小伙哦1 小时前
C++工程实战: 预处理宏、宏重定义避坑、LOG_TAG业务实践与__COUNTER__深度解析
c++
IVVi0jToe1 小时前
高效C++线程池设计与实现
java·c++·安全
^yi1 小时前
【C++】内存管理
开发语言·c++
云栖梦泽2 小时前
从 IMX415 摄像头驱动理解 Media Controller 框架
linux·开发语言·c++·嵌入式硬件
C++ 老炮儿的技术栈2 小时前
MFC 自定义纯色居中文字进度条控件
c语言·数据库·c++·windows·算法·c·visual studio
researcher-Jiang2 小时前
Manacher算法学习与应用
c++·学习·算法