아직 계정이 없으신가요? 회원가입

Dev. Talk

코딩 테스트 세트 문제 틀린 부분 확인 부탁드립니다!

회원사진rhkr9080
41 views2022-11-14 17:53

강의자료 보고 C++로 짜보았는데 오류가 나옵니다


혹시 틀린 부분 있으면 지적 부탁드립니다!


#include <iostream>
#include <vector>
using namespace std;

vector<int> C;
vector<int> D;
int N, T;

long long int pow(long long int num, int power)
{
	long long int answer = 1;
	for (int i = 0; i < power; i++)
	{
		answer *= num;
	}
	return answer;
}

void CLEAR()
{
	C.clear();
	D.clear();
}

void INPUT()
{
	for (int i = 1; i <= 2 * N - 1; i++)
	{
		int num;
		cin >> num;
		if (i & 1 == 1)
			C.push_back(num);
		else
			D.push_back(num);
	}
}

int check(long long int testNum)
{
	long long now = C[0];
	for (int i = 0; i < N-1 ; i++)
	{
		if (now >= testNum)
			now = C[i + 1] + D[i];
		else if (now + D[i] >= testNum)
			now = C[i + 1] + (now + D[i] - testNum);
		else
			return 0;
	}
	if (now >= testNum)
		return 1;
	else
		return 0;
}

long long int bSearch(long long int start, long long int end)
{
	if (start == end)
		return start;
	long long int middle = (start + end + 1) / 2;
	if (check(middle))
		return bSearch(middle, end);
	else
		return bSearch(start, middle-1);
}

int main()
{
	cin >> N >> T;
	for (int tc = 1; tc <= T; ++tc)
	{
		CLEAR();
		INPUT();
		cout << bSearch(0, 2*pow(10, 12)) << "\n";
	}

	return (0);
}