Hoon222y

[BOJ 3273] 두 수의 합 본문

코딩/BOJ & 알고스팟

[BOJ 3273] 두 수의 합

hoon222y 2017. 8. 24. 18:16

https://www.acmicpc.net/problem/3273


단순이 찾아보면 n이 10만이기 때문에 O(N^2)으로 시간초과

정렬된 배열에서 binary search를 해아한다.


포스팅 하는 이유는 STL binary_search를 처음 써봐서 ;; 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <stack>
#include <deque>
#include <queue>
#include <cmath>
#include <stdio.h>
#define INF 1e9
typedef long long ll;
 
using namespace std;
 
 
int n,ans,x;
vector<int> v;
 
int main(){
    cin >>n;
 
    for(int i=0;i<n;i++){
        int a;
        cin >>a;
        v.push_back(a);
    }
    sort(v.begin(),v.end());
    cin >> x;
    for(int i=0;i<n;i++){
        if(binary_search(v.begin(), v.end(), x-v[i]) == 1){
            ans++;
        }
    }
    cout <<ans/2 <<endl;
}
 
 
cs


'코딩 > BOJ & 알고스팟' 카테고리의 다른 글

[BOJ 1744] 수 묶기  (0) 2017.08.27
[BOJ 1781] 컵라면  (0) 2017.08.26
[BOJ 11058] 크리보드  (0) 2017.08.24
[BOJ 13700] 완전범죄  (0) 2017.08.24
[BOJ 1377] 버블 소트  (0) 2017.08.23
Comments