※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 16169번 문제인 수행 시간이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/16169 

 

16169번: 수행 시간

첫 번째 줄에는 컴퓨터의 개수 n이 주어진다. (3 ≤ n ≤ 100) 두 번째 줄부터 n개의 줄에 걸쳐 1번부터 n번까지 각 컴퓨터의 계급과 동작 속도 t가 공백을 두고 주어진다. (1 ≤ t ≤ 100)

www.acmicpc.net

계급이 c인 컴퓨터들에 대하여 각각 가능한 가장 빠른 시각에 작업을 시작해 작업을 마치고 모든 계급이 c+1인 컴퓨터들에 정보를 전송하는 것을 시뮬레이션하는 것으로 문제를 해결하자. 즉, 계급단위로 시뮬레이션을 돌려 문제를 해결하자.

 

이는 아래 구현에서의 C와 같은 벡터의 배열을 이용해 편하게 구현할 수 있다.

 

아래는 제출한 소스코드이다.

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

int N;
vector<int> C[102];
int T[101];
int val[101];
int ans;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> N;
	for (int i = 1; i <= N; i++) {
		int c, t; cin >> c >> t;
		C[c].emplace_back(i);
		T[i] = t;
	}

	for (int c = 1; c <= N; c++) {
		for(auto& x:C[c]) {
			ans = max(ans, val[x] + T[x]);
			for (auto& y : C[c + 1]) {
				val[y] = max(val[y], val[x] + T[x] + (x - y) * (x - y));
			}
		}
	}

	cout << ans;
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 16166 // C++] 서울의 지하철  (0) 2023.08.04
[BOJ 25577 // C++] 열 정렬정렬 정  (0) 2023.08.03
[BOJ 23059 // C++] 리그 오브 레게노  (0) 2023.08.01
[BOJ 1322 // C++] X와 K  (0) 2023.07.31
[BOJ 1334 // C++] 다음 팰린드롬 수  (0) 2023.07.30

+ Recent posts