Title Description
Given an integer k and an unordered array, the elements of a,a are n distinct integers, finding the pairs of all and equal k in array a. For example k = 8, Array a:{-1,6,5,3,4,2,9,0,8}, all and equal to 8 pairs include ( -1,9), (0,8), (2,6), (3,5).
Ideas
Enumerate a two-minute one, very good.
#include <stdio.h>#include<iostream>#include<string>#include<cstring>#include<algorithm>using namespacestd;#defineLL Long Long#defineN 50001#defineINF 0x7f7f7f7fintA[n];intN, K;intcmpintAintb) { returnA <b;}intFindintLfintRtintx) { intL = LF, r =RT; intm = (L + r) >>1; if(A[m] = = x)return 1; while(L <r) {if(A[l] > x | | a[r] < x)return 0; if(A[m] > x) r = m-1; Else if(A[m] < x) L = m +1; M= (L + r) >>1; if(A[m] = = x)return 1; } return 0;}intMain () {scanf ("%d%d", &k, &N); for(inti =1; I <= N; i++) scanf ("%d", &A[i]); Sort (a+1, A + n +1, CMP); BOOLFL =0; for(inti =1; I <= N; i++) { if(Find (i +1, N, K-A[i])) {printf ("%d%d\n", A[i], K-A[i]); FL=1; } } if(!FL) printf ("No solution\n");}
51nod 1001_ array and equals K in number pairs _ two points