PTA Encuentra monedas (25 分)

Es la mente humana la que libera la luz infinita, y también es la mente humana la que crea la oscuridad ilimitada. La luz y la oscuridad se entrelazan y luchan juntas. Este es el mundo por el que estamos nostálgicos y desamparados.

A Eva le encanta coleccionar monedas de todo el universo, incluidos otros planetas como Marte. Un día visitó un centro comercial universal que podía aceptar todo tipo de monedas como pago. Sin embargo, había un requisito especial del pago: por cada billete, solo podía usar exactamente dos monedas para pagar la cantidad exacta. Dado que tiene hasta 10 5 monedas con ella, definitivamente necesita tu ayuda. Se supone que debes decirle, por una cantidad determinada de dinero, si puede encontrar o no dos monedas para pagarlo.

Especificación de entrada:

Cada archivo de entrada contiene un caso de prueba. Para cada caso, la primera línea contiene 2 números positivos: N (≤10 5, el número total de monedas) y M (≤10 3, la cantidad de dinero que Eva tiene que pagar). La segunda línea contiene N valores faciales de las monedas, que son todos números positivos no más de 500. Todos los números en una línea están separados por un espacio.

Especificación de salida:

Para cada caso de prueba, imprima en una línea los dos valores faciales V 1 y V 2 (separados por un espacio) de manera que V 1 + V 2 = M y V 1 ≤V 2. Si dicha solución no es única, envíe la que tenga el V 1 más pequeño. Si no hay solución, emita en su  No Solution lugar.

Entrada de muestra 1:

8 15
1 2 8 7 2 4 11 15

Salida de muestra 1:

4 11

Entrada de muestra 2:

7 14
1 8 7 2 4 11 15

Salida de muestra 2:

A Eva le encanta coleccionar monedas de todo el universo, incluidos otros planetas como Marte. Un día visitó un centro comercial universal que podía aceptar todo tipo de monedas como pago. Sin embargo, había un requisito especial del pago: por cada billete, solo podía usar exactamente dos monedas para pagar la cantidad exacta. Dado que tiene hasta 10 5 monedas con ella, definitivamente necesita tu ayuda. Se supone que debes decirle, por una cantidad determinada de dinero, si puede encontrar o no dos monedas para pagarlo.

Especificación de entrada:

Cada archivo de entrada contiene un caso de prueba. Para cada caso, la primera línea contiene 2 números positivos: N (≤10 5, el número total de monedas) y M (≤10 3, la cantidad de dinero que Eva tiene que pagar). La segunda línea contiene N valores faciales de las monedas, que son todos números positivos no más de 500. Todos los números en una línea están separados por un espacio.

Especificación de salida:

Para cada caso de prueba, imprima en una línea los dos valores faciales V 1 y V 2 (separados por un espacio) de manera que V 1 + V 2 = M y V 1 ≤V 2. Si dicha solución no es única, envíe la que tenga el V 1 más pequeño. Si no hay solución, emita en su  No Solution lugar.

Entrada de muestra 1:

8 15
1 2 8 7 2 4 11 15

Salida de muestra 1:

4 11

Entrada de muestra 2:

7 14
1 8 7 2 4 11 15

Salida de muestra 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;
}

Supongo que te gusta

Origin blog.csdn.net/weixin_44170305/article/details/108558531
Recomendado
Clasificación