답안 #1068005

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1068005 2024-08-21T06:36:37 Z kunzaZa183 웜뱃 (IOI13_wombats) C++17
55 / 100
20000 ms 20824 KB
#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:24:3: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
   24 |   for(int i = 0; i < r; i++)
      |   ^~~
wombats.cpp:28:5: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   28 |     qry tmp;
      |     ^~~
# 결과 실행 시간 메모리 Grader output
1 Correct 59 ms 15964 KB Output is correct
2 Correct 38 ms 15960 KB Output is correct
3 Correct 107 ms 17488 KB Output is correct
4 Correct 39 ms 15960 KB Output is correct
5 Correct 40 ms 15964 KB Output is correct
6 Correct 1 ms 344 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 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 344 KB Output is correct
7 Correct 1 ms 344 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 1372 KB Output is correct
12 Correct 2 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 116 ms 928 KB Output is correct
2 Correct 227 ms 1220 KB Output is correct
3 Correct 194 ms 920 KB Output is correct
4 Correct 198 ms 860 KB Output is correct
5 Correct 192 ms 856 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 95 ms 924 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 517 ms 19984 KB Output is correct
2 Correct 944 ms 19800 KB Output is correct
3 Correct 566 ms 20056 KB Output is correct
4 Correct 546 ms 20788 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 117 ms 940 KB Output is correct
2 Correct 228 ms 1216 KB Output is correct
3 Correct 227 ms 916 KB Output is correct
4 Correct 194 ms 920 KB Output is correct
5 Correct 194 ms 920 KB Output is correct
6 Correct 520 ms 19800 KB Output is correct
7 Correct 946 ms 19800 KB Output is correct
8 Correct 514 ms 19804 KB Output is correct
9 Correct 541 ms 20564 KB Output is correct
10 Correct 38 ms 15964 KB Output is correct
11 Correct 39 ms 15964 KB Output is correct
12 Correct 73 ms 17632 KB Output is correct
13 Correct 39 ms 15960 KB Output is correct
14 Correct 39 ms 15960 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 1 ms 348 KB Output is correct
19 Correct 1 ms 348 KB Output is correct
20 Correct 1 ms 348 KB Output is correct
21 Correct 2 ms 348 KB Output is correct
22 Correct 2 ms 348 KB Output is correct
23 Correct 2 ms 348 KB Output is correct
24 Correct 2 ms 348 KB Output is correct
25 Correct 73 ms 1468 KB Output is correct
26 Correct 1 ms 344 KB Output is correct
27 Correct 91 ms 920 KB Output is correct
28 Execution timed out 20006 ms 20096 KB Time limit exceeded
29 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 117 ms 860 KB Output is correct
2 Correct 261 ms 1208 KB Output is correct
3 Correct 195 ms 860 KB Output is correct
4 Correct 193 ms 856 KB Output is correct
5 Correct 196 ms 856 KB Output is correct
6 Correct 525 ms 19800 KB Output is correct
7 Correct 1004 ms 20000 KB Output is correct
8 Correct 539 ms 19804 KB Output is correct
9 Correct 540 ms 20824 KB Output is correct
10 Correct 63 ms 15964 KB Output is correct
11 Correct 37 ms 15964 KB Output is correct
12 Correct 73 ms 17488 KB Output is correct
13 Correct 64 ms 15964 KB Output is correct
14 Correct 38 ms 15964 KB Output is correct
15 Correct 620 ms 19796 KB Output is correct
16 Execution timed out 20052 ms 20076 KB Time limit exceeded
17 Halted 0 ms 0 KB -