제출 #1136977

#제출 시각아이디문제언어결과실행 시간메모리
1136977the_coding_poohShortcut (IOI16_shortcut)C++20
0 / 100
0 ms324 KiB
#include "shortcut.h" #include <bits/stdc++.h> #define uwu return using namespace std; const int SIZE = 1e6 + 5; const long long INF = 1e18 + 7; long long pre[SIZE]; long long pre_max[SIZE], suf_max[SIZE]; vector <int> d; long long calc_in(int l, int r, int c){ long long ret = 0; for(int i = l; i <= r; i++){ for(int j = i; j <= r; j++){ ret = max(ret, min(pre[j] - pre[i], pre[r] - pre[j] + pre[i] - pre[l] + c) + d[i] + d[j]); } } return ret; } long long calc_n(int l, int r){ long long ret = 0; for(int i = l; i <= r; i++){ for(int j = i; j <= r; j++){ ret = max(ret, pre[j] - pre[i] + d[i] + d[j]); } } return ret; } long long find_shortcut(int n, vector<int> l, vector<int> _d, int c){ n--; d = _d; for(int i = 1; i <= n; i++){ pre[i] = l[i] + pre[i - 1]; } pre_max[0] = d[0]; for(int i = 1; i <= n; i++){ pre_max[i] = max(pre_max[i - 1], d[i] - pre[i]); } suf_max[n] = d[n] + pre[n]; for(int i = n - 1; i >= 0; i--){ suf_max[i] = max(suf_max[i + 1], d[i] + pre[i]); } long long now_ans = INF, ans = INF; for(int l = 0, r = 0; l < n; l++){ while(r < n){ r++; long long tmp = max({pre_max[l] + suf_max[r] + min(0LL, c - pre[r] + pre[l]), calc_in(l, r, c), calc_n(0, l), calc_n(r, n)}); if(tmp > now_ans){ r--; break; } else now_ans = tmp; } ans = min(now_ans, ans); // cout << l << ' ' << r << ' ' << now_ans << '\n'; if(l < n) now_ans = max({pre_max[l + 1] + suf_max[r] + min(0LL, c - pre[r] + pre[l + 1]), calc_in(l + 1, r, c), calc_n(0, l + 1), calc_n(r, n)}); } uwu ans; }

컴파일 시 표준 에러 (stderr) 메시지

shortcut.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
shortcut_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...