Submission #634997

#TimeUsernameProblemLanguageResultExecution timeMemory
634997kabikaJump (BOI06_jump)C++17
20 / 100
8 ms1028 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; constexpr ll MOD = 1e9 + 7; #define pb push_back string add(string x, string y) { int carry = 0; int sx = static_cast<int>(x.size()); int sy = static_cast<int>(y.size()); if(sx > sy) { swap(x,y); swap(sx,sy); } if(sx < sy) { for(int i = sx; i < sy; ++i) x.pb('0'); } string s = ""; for(int i = 0; i < sy; ++i) { int a = x[i]-48; int b = y[i]-48; s.pb(static_cast<char>((a+b+carry)%10 + 48)); carry = (a+b+carry)/10; } if(carry != 0) s.pb(static_cast<char>(carry + 48)); //cout << x << "+" << y << "=" << s; return s; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; vector<vector<int>> v(n,vector<int>(n)); vector<vector<string>> dp(n,vector<string>(n,"0")); for(int i = 0; i < n; ++i) { for(int j = 0; j < n; ++j) cin >> v[i][j]; } dp[0][0] = "1"; for(int i = 0; i < n; ++i) { for(int j = 0; j < n; ++j) { if(v[i][j] == 0) continue; if(i+v[i][j] < n) dp[i+v[i][j]][j] = add(dp[i][j],dp[i+v[i][j]][j]); if(j+v[i][j] < n) dp[i][j+v[i][j]] = add(dp[i][j],dp[i][j+v[i][j]]); } } /*for(int i = 0; i < n; ++i) { for(int j = 0; j < n; ++j) cout << dp[i][j] << " "; cout << '\n'; }*/ cout << dp[n-1][n-1] << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...