Submission #18051

#TimeUsernameProblemLanguageResultExecution timeMemory
18051cometWombats (IOI13_wombats)C++98
55 / 100
20000 ms20612 KiB
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
#include "wombats.h"

int R,C;
int H[5000][200];
int V[5000][200];
int dp[5000][200];

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-1;j++){
    		H[i][j]=_H[i][j];
    	}
    }
    for(int i=0;i<R-1;i++){
    	for(int j=0;j<C;j++){
    		V[i][j]=_V[i][j];
    	}
    }
}

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) {
	dp[0][v1]=0;
	int sum=0;
	for(int i=v1-1;i>=0;i--){
		sum+=H[0][i];
		dp[0][i]=sum;
	}
	sum=0;
	for(int i=v1;i<C-1;i++){
		sum+=H[0][i];
		dp[0][i+1]=sum;
	}

	int l[5000],r[5000];

	for(int i=1;i<R;i++){
		for(int j=0;j<C;j++){
			l[j]=dp[i-1][j]+V[i-1][j];
			if(j)l[j]=min(l[j],l[j-1]+H[i][j-1]);
		}
		for(int j=C-1;j>=0;j--){
			r[j]=dp[i-1][j]+V[i-1][j];
			if(j<C-1)r[j]=min(r[j],r[j+1]+H[i][j]);
		}
		for(int j=0;j<C;j++){
			dp[i][j]=min(l[j],r[j]);
		}
	}

    return dp[R-1][v2];
}	
#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...