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;
}
相关推荐
端平入洛14 小时前
delete又未完全delete
c++
端平入洛2 天前
auto有时不auto
c++
哇哈哈20212 天前
信号量和信号
linux·c++
多恩Stone2 天前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc
蜡笔小马2 天前
21.Boost.Geometry disjoint、distance、envelope、equals、expand和for_each算法接口详解
c++·算法·boost
超级大福宝3 天前
N皇后问题:经典回溯算法的一些分析
数据结构·c++·算法·leetcode
weiabc3 天前
printf(“%lf“, ys) 和 cout << ys 输出的浮点数格式存在细微差异
数据结构·c++·算法
问好眼3 天前
《算法竞赛进阶指南》0x01 位运算-3.64位整数乘法
c++·算法·位运算·信息学奥赛
yyjtx3 天前
DHU上机打卡D31
开发语言·c++·算法
czxyvX3 天前
020-C++之unordered容器
数据结构·c++