처음에 접근을 잘못해서 완전 헤맸다. 오른쪽 바로 옆에 있는 사람에게만 던져야하는 줄 알았다. 왼쪽에 있는 사람이 오른쪽에 있는 아무나한테만 던지면 되는 문제였다. 이걸 알게 된 후에 어떻게 해야할까 생각이 잘 안나서 ICPC Sinchon 슬랙에 있는 다른 분이 질문하신 내용과 답변을 참고했다. 던져서 오른쪽으로 갈 수 있는 최대위치값을 maxD라는 변수를 이용해 갱신하면 된다. 또 n==1인 경우를 잊지말고 잘 챙겨줘야한다. 이걸 잊어서 두세번은 더 틀렸다.
#include<iostream>
#include<vector>
using namespace std;
int main(){
long long n,p;
cin>>n;
vector<long long> v;
vector<long long> v1;
for(int i=0;i<n;i++){
cin>>p;
v.push_back(p);
}
for(int i=0;i<n-1;i++){
cin>>p;
v1.push_back(p);
}
if(n==1){
cout<<"권병장님, 중대장님이 찾으십니다";
return 0;
}
long long maxD=0;
for(int i=0;i<n-1;i++){
if(maxD<=v[i]+v1[i]){
maxD=v[i]+v1[i];
}
if(maxD<v[i+1]){
cout<<"엄마 나 전역 늦어질 것 같아";
return 0;
}
}
cout<<"권병장님, 중대장님이 찾으십니다";
}