백준14493 과일노리

문제 링크

  • http://icpc.me/14493

문제 출처

  • 2017 선린 봄맞이 대회 G번

시간복잡도

  • O(n)

풀이

b초 동안 감시하고 들어간 뒤에 a초 후에 다시 나와 감시하는 행동을 반복합니다.
(a + b)초마다 사이클이 반복되기 때문에 현재 시간을 (a + b)와 나머지 연산을 시킨 뒤, 적절하게 처리를 해주면 됩니다.

전체 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <bits/stdc++.h>
using namespace std;

int main(){
	ios_base::sync_with_stdio(0); cin.tie(0);
	int n; cin >> n;
	int ans = 0;
	for(int i=0; i<n; i++){
		int a, b; cin >> a >> b;
		int mod = ans % (a+b);
		if(mod < b) ans += b-mod;
		ans++;
	}
	cout << ans;
}