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;
}
相关推荐
码匠许师傅2 小时前
【C++ 面试真题】聊聊 C++ 的序列容器
java·c++·面试
C++ 老炮儿的技术栈2 小时前
Qt5.9.1 Windows 完整开发环境搭建流程
开发语言·c++·windows·qt·编辑器·代码化
键盘会跳舞3 小时前
C++:std::tuple 源码级深度拆解——变参模板、SFINAE与模板元编程核心技巧
开发语言·c++·sfinae·变参模板
bkspiderx3 小时前
从零开始:VS Code搭建C/C++开发环境全指南(Windows/macOS/Linux)
c语言·c++·windows·vs code·c/c++开发环境
东华万里3 小时前
第40篇C++核心基础与工程实践:从底层逻辑到避坑指南
开发语言·c++·面试·大学生专区
luj_17683 小时前
元设计的诱惑与现实
c语言·开发语言·c++·经验分享·算法
小星星闪亮登场3 小时前
ST表--倍增思想
开发语言·数据结构·c++·算法·思维
东华万里4 小时前
第40篇 C++核心基础与工程实践:从底层逻辑到避坑指南
开发语言·c++·大学生专区
AC赳赳老秦4 小时前
OpenClaw 多源采集公开行业数据:从原始信息到研究报告初稿的自动化实践
java·c语言·c++·python·php·deepseek·openclaw
玩三国杀玩的4 小时前
Pytorch-c++-CUDA
c++·pytorch·python·深度学习