Tìm số cặp số (i, j) trong một dãy số có tổng bằng k

Lập trình C++

Bài toán. Tìm số cặp (i, j) sao cho ai + aj = k. Nếu không có ghi ra -1. 

Ví dụ: n = 6; dãy 1 3 4 2 7 3; k = 4 → res = 2

SEARCH.INP

SEARCH.OUT

6 4

1 3 4 2 7 3

2

Code tham khảo:

#include <iostream>
using namespace std;

int main () {
    freopen("SEARCH.INP","r",stdin);
    freopen("SEARCH.OUT","w",stdout);
    int n, k, a[1000];
    cin >> n >> k;
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    int dem = 0;
    for(int i=0; i<n-1; i++) {
        for(int j=i+1;j<n;j++) {
            if(a[i] + a[j] == k) dem++;
        }
    }
    if(dem==0) cout << -1;
    else cout << dem;
    return 0;
}