제출 #316339

#제출 시각아이디문제언어결과실행 시간메모리
316339sofapudenJump (BOI06_jump)C++14
100 / 100
14 ms1152 KiB
#include <bits/stdc++.h>

using namespace std;

string add(string a, string b){
	string ans;
	reverse(a.begin(),a.end());
	reverse(b.begin(),b.end());
	while(a.size() < b.size()){
		a+="0";
	}
	while(b.size() < a.size()){
		b+="0";
	}
	int ex = 0;
	for(int i = 0; i < (int)a.size(); ++i){
		int cur = a[i]+b[i]+ex-'0'-'0';
		ex = cur/10;
		ans+=(char)((cur%10)+'0');
	}
	if(ex)ans += (char)('0'+ex);
	reverse(ans.begin(),ans.end());
	return ans;
}
	

int main(){
	int n; cin >> n;
	vector<vector<int>> gr(n,vector<int>(n));
	vector<vector<string>> dp(n,vector<string>(n,"0"));
	dp[0][0] = "1";
	for(auto &x : gr)for(auto &y : x)cin >> y;
	for(int i = 0; i < n; ++i){
		for(int j = 0; j < n; ++j){
			if(gr[i][j] + i < n && gr[i][j] != 0)dp[i+gr[i][j]][j]=add(dp[i][j],dp[i+gr[i][j]][j]);
			if(gr[i][j] + j < n && gr[i][j] != 0)dp[i][j+gr[i][j]]=add(dp[i][j],dp[i][j+gr[i][j]]);
		}
	}
	cout << dp[n-1][n-1] << "\n";
}
#Verdict Execution timeMemoryGrader output
Fetching results...