Submission #1068055

# Submission time Handle Problem Language Result Execution time Memory
1068055 2024-08-21T06:58:53 Z kunzaZa183 Wombats (IOI13_wombats) C++17
55 / 100
20000 ms 24156 KB
#pragma GCC optimize("O3")

#include "wombats.h"
#include <bits/stdc++.h>
#include <utility>
using namespace std;


struct qry{
  pair<int,int> pos;
  int w;
  bool operator<(qry x) const{
    return w > x.w;
  }
};

int hori[5000][200],verti[5000][200];
int dp[5000][200],r,c;
int ans[200][200];

bitset<200> alrdid;

const int big = 1e9+7;
void dij(int a,int b,int in){
  priority_queue<qry> pq;
  for(int i = 0; i < r; i++)
    for(int j = 0; j< c;j++)
      dp[i][j] = big;

    qry tmp;
    tmp.pos = {a,b};
    tmp.w = 0;
    pq.push(tmp);

  while(!pq.empty()) {
    qry x = pq.top();
    pq.pop();
    if(dp[x.pos.first][x.pos.second] == big) {
      dp[x.pos.first][x.pos.second] = x.w;
      qry sth;
      if(x.pos.second!=0) {
        sth.pos = {x.pos.first,x.pos.second - 1};
        sth.w = hori[sth.pos.first][sth.pos.second] + x.w;
        pq.push(sth);
      }
      if(x.pos.second != c - 1) {
        sth.pos = {x.pos.first, x.pos.second + 1};
        sth.w = hori[x.pos.first][x.pos.second] + x.w;
        pq.push(sth);
      }
      if(x.pos.first != 0) {
        sth.pos = {x.pos.first - 1,x.pos.second};
        sth.w = verti[sth.pos.first][sth.pos.second] + x.w;
        pq.push(sth);
      } 
    }
  }

  for(int i = 0; i < c;i++)
    ans[in][i] = dp[0][i];
}

void init(int R, int C, int H[5000][200], int V[5000][200]) {
  r = R, c= C;
  for(int i =0; i < R;i++)
    for(int j = 0; j < C;j++)
      hori[i][j] = H[i][j], verti[i][j] = V[i][j];
  alrdid.reset();
}



void changeH(int P, int Q, int W) {
  hori[P][Q] = W;
  alrdid.reset();
}

void changeV(int P, int Q, int W) {
  verti[P][Q] = W;
  alrdid.reset();
}

int escape(int V1, int V2) {
  if(!alrdid[V2])
    dij(r-1,V2,V2);
  alrdid[V2] = 1;
  return ans[V2][V1];
}

Compilation message

grader.c: In function 'int main()':
grader.c:15:6: warning: variable 'res' set but not used [-Wunused-but-set-variable]
   15 |  int res;
      |      ^~~
wombats.cpp: In function 'void dij(int, int, int)':
wombats.cpp:26:3: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
   26 |   for(int i = 0; i < r; i++)
      |   ^~~
wombats.cpp:30:5: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   30 |     qry tmp;
      |     ^~~
# Verdict Execution time Memory Grader output
1 Correct 38 ms 15964 KB Output is correct
2 Correct 40 ms 15964 KB Output is correct
3 Correct 100 ms 17492 KB Output is correct
4 Correct 47 ms 15960 KB Output is correct
5 Correct 39 ms 15960 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 2 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 3 ms 348 KB Output is correct
8 Correct 2 ms 348 KB Output is correct
9 Correct 2 ms 348 KB Output is correct
10 Correct 2 ms 348 KB Output is correct
11 Correct 42 ms 1484 KB Output is correct
12 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 121 ms 860 KB Output is correct
2 Correct 236 ms 1220 KB Output is correct
3 Correct 213 ms 856 KB Output is correct
4 Correct 197 ms 996 KB Output is correct
5 Correct 213 ms 1112 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 93 ms 860 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 554 ms 20060 KB Output is correct
2 Correct 963 ms 20056 KB Output is correct
3 Correct 550 ms 20060 KB Output is correct
4 Correct 556 ms 21276 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 144 ms 860 KB Output is correct
2 Correct 235 ms 1468 KB Output is correct
3 Correct 201 ms 988 KB Output is correct
4 Correct 243 ms 1024 KB Output is correct
5 Correct 215 ms 860 KB Output is correct
6 Correct 550 ms 20056 KB Output is correct
7 Correct 1031 ms 20060 KB Output is correct
8 Correct 546 ms 20068 KB Output is correct
9 Correct 601 ms 21260 KB Output is correct
10 Correct 51 ms 15968 KB Output is correct
11 Correct 42 ms 16116 KB Output is correct
12 Correct 88 ms 18516 KB Output is correct
13 Correct 40 ms 16116 KB Output is correct
14 Correct 40 ms 15964 KB Output is correct
15 Correct 1 ms 344 KB Output is correct
16 Correct 1 ms 348 KB Output is correct
17 Correct 1 ms 348 KB Output is correct
18 Correct 2 ms 348 KB Output is correct
19 Correct 1 ms 348 KB Output is correct
20 Correct 1 ms 344 KB Output is correct
21 Correct 3 ms 348 KB Output is correct
22 Correct 2 ms 344 KB Output is correct
23 Correct 3 ms 348 KB Output is correct
24 Correct 3 ms 348 KB Output is correct
25 Correct 43 ms 2432 KB Output is correct
26 Correct 2 ms 348 KB Output is correct
27 Correct 101 ms 1000 KB Output is correct
28 Execution timed out 20036 ms 22292 KB Time limit exceeded
29 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 131 ms 936 KB Output is correct
2 Correct 249 ms 1224 KB Output is correct
3 Correct 212 ms 936 KB Output is correct
4 Correct 208 ms 860 KB Output is correct
5 Correct 202 ms 900 KB Output is correct
6 Correct 589 ms 19800 KB Output is correct
7 Correct 998 ms 20008 KB Output is correct
8 Correct 575 ms 19984 KB Output is correct
9 Correct 613 ms 20684 KB Output is correct
10 Correct 48 ms 15964 KB Output is correct
11 Correct 41 ms 15964 KB Output is correct
12 Correct 81 ms 17620 KB Output is correct
13 Correct 41 ms 15964 KB Output is correct
14 Correct 41 ms 16084 KB Output is correct
15 Correct 776 ms 20012 KB Output is correct
16 Execution timed out 20104 ms 24156 KB Time limit exceeded
17 Halted 0 ms 0 KB -