https://www.acmicpc.net/problem/3649
목적
구멍을 막을 수 있는 차이의 절대값이 가장 큰 조각 2개를 찾자.
접근법
1. 정렬 후 투포인터 알고리즘으로 양쪽 끝에서 조건을 만족하는 조각을 찾아나간다.
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
|
#include<iostream>
#include<algorithm>
#define f(i,l,r) for(int i=l;i<r;++i)
using namespace std;
bool solve(int x){
int n;cin>>n;
int a[(int)1e6];f(i,0,n)cin>>a[i];
sort(a,a+n);
int l=0,r=n-1;
while(l<r){
int sum=a[l]+a[r];
if(sum==x){
cout<<"yes "<<a[l]<<' '<<a[r]<<'\n';
return true;
}
if(sum>x)--r;
else ++l;
}
return false;
}
int main(){
ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int x;
while(cin>>x){
x*=1e7;
if(!solve(x))cout<<"danger\n";
}
}
|
문제 설명과 코드에 대한 피드백은 언제나 환영합니다.
다양한 의견 댓글로 남겨주세요.
'Problem Solving > BOJ 백준' 카테고리의 다른 글
[ BOJ 백준 11437번 - LCA ] 해설 및 코드 (0) | 2019.12.16 |
---|---|
[ BOJ 백준 16434번 - 드래곤 앤 던전 ] 해설 및 코드 (0) | 2019.12.16 |
[ BOJ 백준 3056번 - 007 ] 해설 및 코드 (0) | 2019.12.16 |
[ BOJ 백준 3980번 - 선발 명단 ] 해설 및 코드 (0) | 2019.12.16 |
[ BOJ 백준 3090번 - 차이를 최소로 ] 해설 및 코드 (0) | 2019.12.14 |