https://www.acmicpc.net/problem/1756
1756번: 피자 굽기
월드피자 원주 지점에서 N개의 피자 반죽을 오븐에 넣고 구우려고 한다. 그런데, 월드피자에서 만드는 피자 반죽은 지름이 제각각이다. 그런가하면, 월드피자에서 사용하는 오븐의 모양도 몹시
www.acmicpc.net
사실 왜 이분 탐색인지는 잘 모르겠다.
피자 오븐의 지름을 모두 받고, 해당 칸까지의 최소 지름을 저장하는 배열을 추가로 만든다.
그리고 직접 피자를 넣어가면서 어디까지 들어가는지 시뮬레이션 해주면 풀 수 있다(시간 복잡도 O(N)).
#include <cstdio>
#include <algorithm>
using namespace std;
long long int D, N, Oven[300001], Pizza[300001], real[300001];
int main(void){
long long int mini = 1000000001;
scanf("%lld %lld", &D, &N);
for(int i=0; i<D; i++){
scanf("%lld", &Oven[i]);
mini = min(mini, Oven[i]);
real[i] = mini;
}
for(int i=0; i<N; i++)
scanf("%lld", &Pizza[i]);
int cnt1 = D-1, cnt2 = 0;
while(cnt1>=0 && cnt2<N){
if(real[cnt1]<Pizza[cnt2]){
cnt1--;
}
else{
cnt1--;
cnt2++;
}
}
if(cnt2<N)
printf("0");
else
printf("%d", cnt1+2);
}
'알고리즘 문제' 카테고리의 다른 글
[C/C++ 백준 11868번] 님 게임 2 (Platinum 4) (0) | 2020.09.01 |
---|---|
[C/C++ 백준 4811번] 알약 (Gold 5) (0) | 2020.08.31 |
[C/C++ 백준 2630번] 색종이 만들기 (Silver 3) (0) | 2020.08.29 |
[C/C++ 백준 1992번] 쿼드트리 (Silver 1) (0) | 2020.08.29 |
[C/C++ 백준 9659번] 돌 게임 5 (Gold 5) (0) | 2020.08.28 |