BOJ 19766 Доставка футболок
sorohue가 PS하는 블로그
BOJ 19766 Доставка футболок
문제 링크입니다.
문제 요약
$0$초에 시작해, $1$번 집부터 $N$번 집까지 다음과 같은 방법으로 순서대로 방문합니다.
- $s_i$초 동안 $i$번 집으로 이동합니다.
- $i$번 집 앞에서 최대 $k$초까지 대기합니다.
- 집주인은 $z_i$초 이후로 집 앞에서 대기합니다. 만약 집주인과 만났다면, $t_i$초를 대기한 후 다음 집으로 출발합니다.
- 집주인을 만나지 못하고 $k$초가 지났다면 다음 집으로 출발합니다.
풀이
문제에서 주어진 대로 시뮬레이션 해주면 쉽게 해결할 수 있습니다. $s_i$ 조건 상 64비트 정수 자료형을 사용해야 할 수 있습니다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using pll = pair<ll, ll>;
ll s[50505];
int main(){
cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
ll n, k, t; cin >> n >> k >> t;
ll ans = 0;
for(int i = 0; i < n; i++) cin >> s[i];
for(int i = 0; i < n; i++){
ll z; cin >> z;
ans += s[i];
if(ans+k >= z){
ans = max(ans, z);
ans += t;
}
else ans += k;
}
cout << ans;
}
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.