Submission #728567

#TimeUsernameProblemLanguageResultExecution timeMemory
728567KarpinJump (BOI06_jump)C++17
100 / 100
17 ms1136 KiB
#include <bits/stdc++.h>

using namespace std;


#define ll long long
#define vt vector
#define ar array

string amount [105][105];

string sumTwoStrings(string first, string second){

    int rem = 0;

    string res = "";
    reverse(first.begin(), first.end());
    reverse(second.begin(), second.end());
    for(int i = 0; i < max(first.size(), second.size()); i++){
        int cur = rem + (first.size() < i + 1 ? 0 : (first[i] - '0')) + (second.size() < i + 1 ? 0 : (second[i] - '0'));
        res += to_string(cur % 10);
        rem = cur / 10;
    }
    if (rem != 0) res += to_string(rem);
    reverse(res.begin(), res.end());
    return res;

}


void solve(){
		
    int n;

    cin >> n;

    int grid [n + 5][n + 5];

    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            cin >> grid[i][j];
            amount[i][j] = "0";
        }
    }


    amount[0][0] = "1";

    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            if (i == j && i == n - 1) break;
            amount[i + grid[i][j]][j] = sumTwoStrings(amount[i + grid[i][j]][j], amount[i][j]);
            amount[i][j + grid[i][j]] = sumTwoStrings(amount[i][j + grid[i][j]], amount[i][j]);
        }
    }

    cout << amount[n - 1][n - 1] << endl;


}

int main(){

	ios::sync_with_stdio(0);
	cin.tie(0);
	
	int testcases = 1;

	// cin >> testcases;

	while(testcases--){
		solve();
	}

	return 0;

}

Compilation message (stderr)

jump.cpp: In function 'std::string sumTwoStrings(std::string, std::string)':
jump.cpp:19:22: warning: comparison of integer expressions of different signedness: 'int' and 'const long unsigned int' [-Wsign-compare]
   19 |     for(int i = 0; i < max(first.size(), second.size()); i++){
      |                    ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jump.cpp:20:39: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   20 |         int cur = rem + (first.size() < i + 1 ? 0 : (first[i] - '0')) + (second.size() < i + 1 ? 0 : (second[i] - '0'));
      |                          ~~~~~~~~~~~~~^~~~~~~
jump.cpp:20:88: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   20 |         int cur = rem + (first.size() < i + 1 ? 0 : (first[i] - '0')) + (second.size() < i + 1 ? 0 : (second[i] - '0'));
      |                                                                          ~~~~~~~~~~~~~~^~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...