Submission #531159

#TimeUsernameProblemLanguageResultExecution timeMemory
531159sidonJump (BOI06_jump)C++17
100 / 100
5 ms1064 KiB
#include <bits/stdc++.h>
using namespace std;

void add(string &x, const string &y) {
	int cur = 0, j = size(y);

	for(int i = 0; i < j || cur; ++i) {
		if(i < j) cur += y[i] - '0';

		if(int(size(x)) == i) x.push_back('0');
		cur += x[i] - '0';
		x[i] = (cur % 10) + '0';
		cur /= 10;
	}
}
 
int main() {
	ios::sync_with_stdio(0), cin.tie(0);
	int n; cin >> n;
 
	int a[n][n];
	string b[n][n];
 
	for(int i = 0; i < n; ++i) {
		for(int j = 0; j < n; ++j) {
			cin >> a[i][j];
			b[i][j] = "0";
		}
	}
 
	b[0][0] = "1";
 
	for(int i = 0; i < n; ++i) {
		for(int j = 0; j < n; ++j) {
			if(i == n-1 && j == n-1) {
				reverse(begin(b[i][j]), end(b[i][j]));
				cout << string(b[i][j]);
			}
 
			if(i + a[i][j] < n)	add(b[i + a[i][j]][j], b[i][j]);
			if(j + a[i][j] < n) add(b[i][j + a[i][j]], b[i][j]);
		}
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...