###### 51nod 1001 和为k的数对 暴力出奇迹

1001 数组中和等于K的数对

Input

Output

Input示例
8 9
-1
6
5
3
4
2
9
0
8
Output示例
-1 9
0 8
2 6
3 5

#include <iostream>
#include <string>
#include <cstring>
#include <stdio.h>
#include <algorithm>
using namespace std;
long long a[10000000];
bool b[10000000];
int main()
{
int k,n;
while(cin>>k>>n)
{
int i;
memset(b,false,sizeof(b));
for(i=0;i<n;i++)
{
cin>>a[i];
b[i]=true;
}
sort(a,a+n);

int j;
int z=0;
j=n-1;

for(i=0;i<n;i++)
{
if(b[i]==false) continue;
if(b[i]==true)
{
for(;j>=0;j--)   //j 只会越来越小
{

if(b[j]==false) continue;
if(a[i]+a[j]<k) break;
if(a[i]+a[j]==k&&b[i]==b[j]&&i!=j)
{
z=1;
b[i]=false;
b[j]=false;
cout<<a[i]<<' '<<a[j]<<endl;
}
}
}
}
if(z==0) cout<<"No Solution"<<endl;
}
return 0;
}


#include<stdio.h>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define M 50005
int a[M];
bool v[M];
int Minfind(int low,int high,int x )
{
int mid;
while(low<=high)
{
mid=(low+high)/2;
if(x==a[mid]) return mid;
else if(x<a[mid]) high=mid-1;
else if(x>a[mid]) low=mid+1;

}
return 0;
}
int main()
{
int K,N;
int i,j;
bool flag=false;
memset(v,false,sizeof(v));
scanf("%d%d",&K,&N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
sort(a,a+N);
for(i=0;i<N;i++)
if(!v[i])
{
v[i]=true;
j=Minfind(i+1,N-1,K-a[i]);
if(j&&!v[j])
{
v[j]=true;
printf("%d %d\n",a[i],a[j]);
flag=true;

}

}
if(!flag)
printf("No Solution\n");
return 0;
}

#include <iostream>
#include <algorithm>
#include <cmath>
#include <stdio.h>
#include <cstring>
using namespace std;
int a[100000];

int main()
{
int k,n;
while(scanf("%d%d",&k,&n)!=EOF)
{
long long i;
for(i=0;i<n;i++) scanf("%d",&a[i]);
sort(a,a+n);
long long l,h,m;
int z=0;
for(i=0;i<n;i++)
{
long long x=k-a[i];
l=i+1;
h=n-1;
while(l<=h)
{
m=(l+h)/2;
if(a[m]==x) {z=1; printf("%d %d\n",a[i],a[m]);break;}
if(a[m]>x) {h=m-1;}
if(a[m]<x) {l=m+1;}

}
}
if(z==0) printf("No Solution\n");
}
}



#### 51Nod－1001－数组中和等于K的数对

2016-07-30 03:51:40

#### 暴力出奇迹

2015-12-21 23:12:46

#### 51nod1001 数组中和等于K的数对

2016-03-20 17:38:22

#### F - 暴力出奇迹

2016-03-17 23:14:37

#### 关于暴力&瞎搞骗分的一些实例

2014-10-28 11:38:27

#### 1001数组中和等于k的数对

2016-07-23 20:30:42

#### 本次考试总结（2017.8.17上午考试）（noip2004真题）

2017-08-17 15:48:38

#### 51nod-【1268 和为K的组合】

2016-10-19 23:21:44

#### 【原创】枚举枚上天，暴力出奇迹（韩信点兵、分钱游戏、硬币面值组合）

2016-11-11 13:17:18

#### 51Nod－1268－和为K的组合

2016-08-10 20:18:09

## 不良信息举报

51nod 1001 和为k的数对 暴力出奇迹