티스토리 뷰
lower_bound를 이용하여 풀 수 있는 문제다
x축에서의 좌표를 홀,짝으로 나눠 높이를 저장하고
높이 y로 지나갈 때 각각의 좌표를 지나가는지 확인하면 된다
이 부분을 배열을 정렬하고 lower_bound를 이용한다면 쉽게 구할 수 있다
홀수 일때는 찾을때 높이에서 빼서 거꾸로 찾으면 된다
소스코드
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>
#include <vector>
using namespace std;
int n,h;
int ans[200020];
vector<int> odd,even;
int main(){
//freopen("input.txt","r",stdin);
scanf(" %d %d",&n,&h);
for(int i=0;i<n;i++){
int x; scanf(" %d",&x); x--;
if(i&1) odd.push_back(x);
else even.push_back(x);
}
sort(odd.begin(),odd.end());
sort(even.begin(),even.end());
h--;
int es = even.size();
int os = odd.size();
for(int i=0;i<=h;i++){
int a = es-(lower_bound(even.begin(),even.end(),i)-even.begin());
int b = os-(lower_bound(odd.begin(),odd.end(),h-i)-odd.begin());
ans[a+b]++;
}
for(int i=0;i<=n;i++){
if(ans[i]){
printf("%d %d\n",i,ans[i]); return 0;
}
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
'알고리즘 > BOJ' 카테고리의 다른 글
[백준] 1987 알파벳 (0) | 2019.08.27 |
---|---|
[백준] 3649 로봇 프로젝트 (0) | 2019.08.27 |
[백준] 2632 피자판매 (0) | 2019.08.27 |
[백준] 2206 벽 부수고 이동하기 (0) | 2019.08.27 |
[백준] 1194 달이 차오른다, 가자. (0) | 2019.08.27 |
댓글