시나브로

3813. [Professional] 그래도 수명이 절반이 되어서는... 본문

알고리즘/SW Expert Academy

3813. [Professional] 그래도 수명이 절반이 되어서는...

혬혬 2021. 4. 13. 19:24
728x90

 

 

Solution : 이진 탐색 + 파라메트릭스 서치

 

#include <iostream>
#include <vector>
#include <queue>
#include <map>
#include <string>
using namespace std;

int main() {
	
	freopen("inp.inp", "r", stdin);
	freopen("out.out", "w", stdout);

	int tc = 0;
	cin >> tc;
	for (int p = 1; p <= tc; p++){
		int n = 0;
		int k = 0;
		cin >> n >> k;
		vector<int> list;
		int a;
		for (int i = 0; i < n; i++) {
			cin >> a;
			list.push_back(a);
		}

		vector<int> problem;
		for (int i = 0; i < k; i++) {
			cin >> a;
			problem.push_back(a);
		}

		int answer = 100000;
		int l = 0;
		int r = 200000;
		while (1) {
			int count = 0;
			int problem_point = 0;
			for(int i=0;i<list.size();i++){
				if (answer >= list[i]) {
					count++;
					if (count == problem[problem_point]) {
						count = 0;
						problem_point++;
					}
				}
				else {
					count = 0;
				}
				if (problem_point >= problem.size())
					break;
			}

			if (problem_point >= problem.size()) {//okey
				r = answer - 1;
			}
			else {
				l = answer + 1;
			}
			if (r < l) {
				answer = l;
				break;
			}
			answer = (r + l) / 2;
		}

		cout << "#" << p << " " << answer << endl;
	}
	
	return 0;
}

 

 

 

swexpertacademy.com/main/learn/course/lectureProblemViewer.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

728x90

'알고리즘 > SW Expert Academy' 카테고리의 다른 글

1949. [모의 SW 역량테스트] 등산로 조성  (0) 2020.12.02
9780. 외계인 침공  (0) 2020.05.25
9778. 카드 게임  (0) 2020.05.19
1859. 백만 장자 프로젝트  (0) 2020.05.17
[D5] 9015. 배열의 분할  (0) 2020.03.18
Comments