PTA Find Coins(25分)

無限の光を放つのは人間の心であり、無限の闇を生み出すのも人間の心であり、光と闇が絡み合って戦うこの世界は、懐かしくて無力な世界です。

エヴァは、火星のような他のいくつかの惑星を含む、宇宙全体からコインを収集するのが大好きです。ある日、彼女はあらゆる種類のコインを支払いとして受け入れることができるユニバーサルショッピングモールを訪れました。しかし、支払いには特別な要件がありました。各請求書について、彼女は正確な金額を支払うために正確に2枚のコインしか使用できませんでした。彼女と一緒に10 5枚ものコインを持っているので、彼女は間違いなくあなたの助けを必要としています。あなたは、彼女がそれを支払うために2つのコインを見つけることができるかどうかにかかわらず、あなたは彼女に、与えられた金額のために言うべきです。

入力仕様:

各入力ファイルには1つのテストケースが含まれています。それぞれのケースで、最初の行には2つの正の数が含まれています:N(≤105、コインの総数)とM(≤103、エヴァが支払う必要のある金額)。2行目には、コインのN個の面の値が含まれています。これらはすべて500以下の正の数です。1行のすべての数字はスペースで区切られています。

出力仕様:

各テストケースについて、V 1 + V 2 = MおよびV 1となるように、2つの面の値V 1およびV 2(スペースで区切られている)を1行で印刷します≤V2。そのようなソリューションが一意でない場合は、V 1が最小のソリューションを出力します。解決策がない場合は、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:

エヴァは、火星のような他のいくつかの惑星を含む、宇宙全体からコインを収集するのが大好きです。ある日、彼女はあらゆる種類のコインを支払いとして受け入れることができるユニバーサルショッピングモールを訪れました。しかし、支払いには特別な要件がありました。各請求書について、彼女は正確な金額を支払うために正確に2枚のコインしか使用できませんでした。彼女と一緒に10 5枚ものコインを持っているので、彼女は間違いなくあなたの助けを必要としています。あなたは、彼女がそれを支払うために2つのコインを見つけることができるかどうかにかかわらず、あなたは彼女に、与えられた金額のために言うべきです。

入力仕様:

各入力ファイルには1つのテストケースが含まれています。それぞれのケースで、最初の行には2つの正の数が含まれています:N(≤105、コインの総数)とM(≤103、エヴァが支払う必要のある金額)。2行目には、コインのN個の面の値が含まれています。これらはすべて500以下の正の数です。1行のすべての数字はスペースで区切られています。

出力仕様:

各テストケースについて、V 1 + V 2 = MおよびV 1となるように、2つの面の値V 1およびV 2(スペースで区切られている)を1行で印刷します≤V2。そのようなソリューションが一意でない場合は、V 1が最小のソリューションを出力します。解決策がない場合は、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
#include<bits/stdc++.h>
using namespace std;
int n,m;
map<int,int> mp;
vector<int> v;
int main(){

    cin>>n>>m;
    v.resize(n);
    for(int i=0;i<n;i++){
        cin>>v[i];
        mp[v[i]]++;
    }
    sort(v.begin(),v.end());
    for(auto it : v){
        if((it!=m-it&&mp[m-it]>=1)||(it==m-it&&mp[m-it]>=2)){
            cout<<it<<" "<<m-it<<endl;
            return 0;
        }
    }
    cout<<"No Solution"<<endl;
    return 0;
}

おすすめ

転載: blog.csdn.net/weixin_44170305/article/details/108558531