# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
782549 | 2023-07-14T04:59:33 Z | qwerasdfzxcl | 케이크 (JOI13_cake) | C++17 | 1500 ms | 262144 KB |
#include <bits/stdc++.h> using namespace std; typedef long long ll; map<int, ll> mp[300300]; int n, a[300300]; ll dfs(int l, int r, int typ = 0){ // if (mp[l].find(r)!=mp[l].end()) return mp[l][r]; ll &ret = mp[l][r]; if (l==r){ if (typ) return ret = a[l]; return ret = 0; } if (a[l] > a[r]){ int nl = l+1; if (nl > n) nl = 1; return ret = ((typ)?a[l]:0) + dfs(nl, r, typ^1); } int nr = r-1; if (nr < 1) nr = n; return ret = ((typ)?a[r]:0) + dfs(l, nr, typ^1); } int main(){ scanf("%d", &n); for (int i=1;i<=n;i++) scanf("%d", a+i); for (int i=1;i<=n;i++){ int l = i+1, r = i-1; if (l>n) l = 1; if (r<1) r = n; printf("%lld\n", a[i] + dfs(l, r, 0)); } }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 898 ms | 22216 KB | Output is correct |
2 | Runtime error | 366 ms | 262144 KB | Execution killed with signal 9 |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Execution timed out | 1544 ms | 45724 KB | Time limit exceeded |
2 | Halted | 0 ms | 0 KB | - |