답안 #257666

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
257666 2020-08-04T14:16:56 Z davi_bart 웜뱃 (IOI13_wombats) C++14
55 / 100
20000 ms 42664 KB
#pragma GCC optimize("O3")
#include <bits/stdc++.h>
#include "wombats.h"
using namespace std;
typedef long long ll;
int h[5000][200],v[5000][200];
int ans[5000][200][200];
int r,c;
struct node{
  int r,c,d,fin;
  bool operator<(const node &x)const {
    return d<x.d;
  }
  bool operator>(const node &x)const {
    return d>x.d;
  }
};
void calc(){
  for(int i=0;i<r;i++){
    for(int j=0;j<c;j++){
      for(int x=0;x<c;x++)ans[i][j][x]=-1;
    }
  }
  priority_queue<node,vector<node>,greater<node> >q;
  for(int i=0;i<c;i++)q.push({r-1,i,0,i});
  while(!q.empty()){
    node x=q.top();
    q.pop();
    if(ans[x.r][x.c][x.fin]>=0)continue;
    ans[x.r][x.c][x.fin]=x.d;
    if(x.c>0)q.push({x.r,x.c-1,x.d+h[x.r][x.c-1],x.fin});
    if(x.c<c-1)q.push({x.r,x.c+1,x.d+h[x.r][x.c],x.fin});
    if(x.r>0)q.push({x.r-1,x.c,x.d+v[x.r-1][x.c],x.fin});
  }
}
void init(int R, int C, int H[5000][200], int V[5000][200]) {
    for(int i=0;i<5000;i++){
      for(int j=0;j<200;j++){
        h[i][j]=H[i][j];
        v[i][j]=V[i][j];
      }
    }
    r=R;
    c=C;
    if(c<=20)calc();
}

void changeH(int P, int Q, int W) {
  h[P][Q]=W;
  if(c<=20)calc();
}

void changeV(int P, int Q, int W) {
  v[P][Q]=W;
  if(c<=20)calc();
}
bool vis[5000][200];
int escape(int V1, int V2) {
  if(c<=20)return ans[0][V1][V2];
  for(int i=0;i<r;i++){
    for(int j=0;j<c;j++){
      vis[i][j]=0;
    }
  }
  priority_queue<node,vector<node>,greater<node> >q;
  q.push({r-1,V2,0,0});
  while(!q.empty()){
    node x=q.top();
    q.pop();
    if(vis[x.r][x.c])continue;
    vis[x.r][x.c]=1;
    if(x.r==0 && x.c==V1)return x.d;
    if(x.c>0)q.push({x.r,x.c-1,x.d+h[x.r][x.c-1],x.fin});
    if(x.c<c-1)q.push({x.r,x.c+1,x.d+h[x.r][x.c],x.fin});
    if(x.r>0)q.push({x.r-1,x.c,x.d+v[x.r-1][x.c],x.fin});
  }
}

Compilation message

grader.c: In function 'int main()':
grader.c:15:6: warning: variable 'res' set but not used [-Wunused-but-set-variable]
  int res;
      ^~~
wombats.cpp: In function 'int escape(int, int)':
wombats.cpp:77:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
# 결과 실행 시간 메모리 Grader output
1 Correct 209 ms 33656 KB Output is correct
2 Correct 211 ms 33536 KB Output is correct
3 Correct 315 ms 35172 KB Output is correct
4 Correct 214 ms 33536 KB Output is correct
5 Correct 211 ms 33528 KB Output is correct
6 Correct 5 ms 8192 KB Output is correct
7 Correct 6 ms 8192 KB Output is correct
8 Correct 6 ms 8192 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 8192 KB Output is correct
2 Correct 6 ms 8192 KB Output is correct
3 Correct 8 ms 8192 KB Output is correct
4 Correct 8 ms 8704 KB Output is correct
5 Correct 7 ms 8576 KB Output is correct
6 Correct 7 ms 8576 KB Output is correct
7 Correct 8 ms 8832 KB Output is correct
8 Correct 10 ms 8576 KB Output is correct
9 Correct 10 ms 8704 KB Output is correct
10 Correct 9 ms 8576 KB Output is correct
11 Correct 97 ms 9720 KB Output is correct
12 Correct 8 ms 8576 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 275 ms 8320 KB Output is correct
2 Correct 214 ms 8824 KB Output is correct
3 Correct 266 ms 8440 KB Output is correct
4 Correct 287 ms 8440 KB Output is correct
5 Correct 262 ms 8440 KB Output is correct
6 Correct 6 ms 8192 KB Output is correct
7 Correct 5 ms 8192 KB Output is correct
8 Correct 5 ms 8192 KB Output is correct
9 Correct 248 ms 8568 KB Output is correct
10 Correct 6 ms 8192 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1511 ms 41288 KB Output is correct
2 Correct 1877 ms 41336 KB Output is correct
3 Correct 1420 ms 41216 KB Output is correct
4 Correct 1523 ms 42064 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 262 ms 8432 KB Output is correct
2 Correct 203 ms 8836 KB Output is correct
3 Correct 279 ms 8568 KB Output is correct
4 Correct 278 ms 8448 KB Output is correct
5 Correct 290 ms 8448 KB Output is correct
6 Correct 1423 ms 41292 KB Output is correct
7 Correct 1814 ms 41336 KB Output is correct
8 Correct 1461 ms 41340 KB Output is correct
9 Correct 1511 ms 42664 KB Output is correct
10 Correct 206 ms 33664 KB Output is correct
11 Correct 212 ms 33656 KB Output is correct
12 Correct 295 ms 36348 KB Output is correct
13 Correct 211 ms 33664 KB Output is correct
14 Correct 211 ms 33664 KB Output is correct
15 Correct 6 ms 8192 KB Output is correct
16 Correct 5 ms 8192 KB Output is correct
17 Correct 5 ms 8192 KB Output is correct
18 Correct 9 ms 8704 KB Output is correct
19 Correct 7 ms 8576 KB Output is correct
20 Correct 8 ms 8704 KB Output is correct
21 Correct 9 ms 8832 KB Output is correct
22 Correct 8 ms 8576 KB Output is correct
23 Correct 8 ms 8704 KB Output is correct
24 Correct 8 ms 8576 KB Output is correct
25 Correct 104 ms 11060 KB Output is correct
26 Correct 8 ms 8608 KB Output is correct
27 Correct 248 ms 8696 KB Output is correct
28 Execution timed out 20062 ms 20732 KB Time limit exceeded
29 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 265 ms 8436 KB Output is correct
2 Correct 214 ms 8852 KB Output is correct
3 Correct 273 ms 8440 KB Output is correct
4 Correct 287 ms 8440 KB Output is correct
5 Correct 275 ms 8440 KB Output is correct
6 Correct 1544 ms 41308 KB Output is correct
7 Correct 2141 ms 41508 KB Output is correct
8 Correct 1430 ms 41368 KB Output is correct
9 Correct 1705 ms 42560 KB Output is correct
10 Correct 223 ms 33784 KB Output is correct
11 Correct 226 ms 33664 KB Output is correct
12 Correct 315 ms 36396 KB Output is correct
13 Correct 226 ms 33664 KB Output is correct
14 Correct 227 ms 33664 KB Output is correct
15 Correct 1267 ms 26904 KB Output is correct
16 Execution timed out 20073 ms 24804 KB Time limit exceeded
17 Halted 0 ms 0 KB -