Bootstrap

51nod-1001 数组中和等于K的数对

sort排序两边指针

#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
int a[50005];
int main()
{

    int k,n;
    cin>>k>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    sort(a+1,a+1+n);
    int flag=0;
    for(int i=1,j=n;i<j;)
    {
        if(a[i]+a[j]==k)
        {   flag=1;
            printf("%d %d\n",a[i],a[j]);
            i++,j--;
        }
        else if(a[i]+a[j]>k)
        {
            j--;
        }
        else if(a[i]+a[j]<k)
        {
            i++;
        }
    }
    if(!flag)
    {
        cout<<"No Solution"<<endl;
    }
    return 0;
}


;