Submission #635030

#TimeUsernameProblemLanguageResultExecution timeMemory
635030kabikaJump (BOI06_jump)C++14
100 / 100
9 ms1108 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; auto sx = (x.size()); auto sy = (y.size()); if(sx > sy) { swap(x,y); swap(sx,sy); } if(sx < sy) { for(auto 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)); 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]]); } } reverse(dp[n-1][n-1].begin(),dp[n-1][n-1].end()); cout << dp[n-1][n-1] << '\n'; return 0; }

Compilation message (stderr)

jump.cpp: In function 'std::string add(std::string, std::string)':
jump.cpp:23:22: warning: comparison of integer expressions of different signedness: 'int' and 'long unsigned int' [-Wsign-compare]
   23 |     for(int i = 0; i < sy; ++i)
      |                    ~~^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...