Submission #808967

#TimeUsernameProblemLanguageResultExecution timeMemory
808967jakobrsWombats (IOI13_wombats)C++17
37 / 100
20075 ms17736 KiB
#include <algorithm> #include <numeric> #include <queue> #include <vector> #ifndef EVAL #include <iostream> #endif #include "wombats.h" #define entire(a) std::begin((a)), std::end((a)) std::vector<std::vector<int>> h, v; int r, c; void init(int R, int C, int H[5000][200], int V[5000][200]) { h.reserve(R); v.reserve(R); for (int i = 0; i < R; i++) { h.emplace_back(entire(H[i])); v.emplace_back(entire(V[i])); } r = R; c = C; } void changeH(int P, int Q, int W) { h[P][Q] = W; } void changeV(int P, int Q, int W) { v[P][Q] = W; } int escape(int V1, int V2) { std::vector<int> dist(c, 0); dist[V1] = 0; for (int i = V1 + 1; i < c; i++) { dist[i] = dist[i - 1] + h[0][i - 1]; } for (int i = V1 - 1; i >= 0; i--) { dist[i] = dist[i + 1] + h[0][i]; } std::priority_queue<std::pair<int, int>> pq; for (int i = 0; i + 1 < r; i++) { // phase 1: process vertical segments for (int j = 0; j < c; j++) { dist[j] += v[i][j]; } // phase 2: process horizontal segments while (!pq.empty()) pq.pop(); // whyy is there no pq.clear(); for (int j = 0; j < c; j++) { pq.push({-dist[j], j}); } while (!pq.empty()) { auto [d, j] = pq.top(); pq.pop(); d = -d; if (d > dist[j]) continue; if (j > 0 && dist[j - 1] > d + h[i + 1][j - 1]) { dist[j - 1] = d + h[i + 1][j - 1]; pq.push({-dist[j - 1], j - 1}); } if (j + 1 < c && dist[j + 1] > d + h[i + 1][j]) { dist[j + 1] = d + h[i + 1][j]; pq.push({-dist[j + 1], j + 1}); } } } return dist[V2]; }

Compilation message (stderr)

grader.c: In function 'int main()':
grader.c:15:6: warning: variable 'res' set but not used [-Wunused-but-set-variable]
   15 |  int res;
      |      ^~~
#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...