이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;
int N = 0;
vector<int> D;
bool visited[1000005];
bool dp(int A1, int Di){
  if (visited[A1] == true) return false;
  visited[A1] = true;
  if (Di == N-1){
    return true;
  }
  int A2 = A1 + D[Di];
  if (A2 < 0 || A2 > N) return false;
  return dp(A2, Di+1);
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  memset(visited, false, sizeof(visited));
  cin >> N;
  for (int i = 0; i < N-1; i++){
    int temp = 0;
    cin >> temp;
    D.push_back(temp);
  }
  for (int i = 1; i < N; i++){
    memset(visited, false, sizeof(visited));
    bool test = dp(i, 0);
    int A = i;
    if (test == false){
      continue;
    }
    else{
      for (int i = 0; i < N-1; i++){
        cout << A << " ";
        A += D[i];
      }
      cout << A << endl;
      return 0;
    }
  }
  cout << "-1" << endl;
  /*
  if (D[0] == 1){
    cout << "1 2" << endl;
  }
  else if (D[0] == -1){
    cout << "2 1" << endl;
  }
  else{
    cout << "-1" << endl;
  }
  */
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |