Submission #414542

#TimeUsernameProblemLanguageResultExecution timeMemory
414542faresbasbsWombats (IOI13_wombats)C++14
37 / 100
20091 ms103856 KiB
#include <bits/stdc++.h>
#include "wombats.h"
using namespace std;
map<int,map<int,map<int,map<int,int>>>> dp;
int n,m,h[5000][200],v[5000][200];

int ans(int r , int c , int en , int tag){
	if(r == n-1 && c == en){
		return 0;
	}
	if(dp.find(r) != dp.end() && dp[r].find(c) != dp[r].end() && dp[r][c].find(en) != dp[r][c].end() && dp[r][c][en].find(tag) != dp[r][c][en].end()){
		return dp[r][c][en][tag];
	}
	int ret = 1000000000;
	if(!tag){
		if(c){
			ret = min(ret,h[r][c-1]+ans(r,c-1,en,tag));
		}
	}else{
		if(c+1 < m){
			ret = min(ret,h[r][c]+ans(r,c+1,en,tag));
		}
	}
	if(r+1 < n){
		ret = min(ret,v[r][c]+min(ans(r+1,c,en,0),ans(r+1,c,en,1)));
	}
	return dp[r][c][en][tag] = ret;
}

void re(){
	dp.clear();
}

void init(int R , int C , int H[5000][200] , int V[5000][200]){
	n = R , m = C;
	for(int i = 0 ; i < n ; i += 1){
		for(int j = 0 ; j < m ; j += 1){
			h[i][j] = H[i][j] , v[i][j] = V[i][j];
		}
	}
	re();
}

void changeH(int P , int Q , int W){
	h[P][Q] = W;
	re();
}

void changeV(int P , int Q , int W){
	v[P][Q] = W;
	re();
}

int escape(int V1 , int V2){
	return min(ans(0,V1,V2,0),ans(0,V1,V2,1));
}

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...