题目介绍
题意: 在给定序列选x,y 是 否有x+y==m,输出还有特定要求…
考察: map使用 或者 数组标记次数
代码
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+4;
int a[N];
//题意: 在给定序列选x,y 是 x+y==m
//考察: map使用 或者 数组标记次数
int main(){
int n,m;
cin>>n>>m;
map<int,int>M;
for(int i=1;i<=n;++i){
cin>>a[i];
M[a[i]]++;
}
int x,y;
x=y=-1;
//要输出最小的v1
sort(a+1,a+n+1);
for(int i=1;i<=n;++i){
M[a[i]]--;
if(M[m-a[i]]){
x= a[i];
y= m-a[i];break;
}
M[a[i]]++;
} if(x==-1)printf("No Solution\n");
else printf("%d %d\n",x,y); return 0;
}