Submission #728567

# Submission time Handle Problem Language Result Execution time Memory
728567 2023-04-22T16:00:20 Z Karpin Jump (BOI06_jump) C++17
100 / 100
17 ms 1136 KB
#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

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 time Memory Grader output
1 Correct 1 ms 596 KB Output is correct
2 Correct 1 ms 596 KB Output is correct
3 Correct 1 ms 596 KB Output is correct
4 Correct 1 ms 596 KB Output is correct
5 Correct 1 ms 596 KB Output is correct
6 Correct 1 ms 672 KB Output is correct
7 Correct 1 ms 596 KB Output is correct
8 Correct 1 ms 596 KB Output is correct
9 Correct 1 ms 672 KB Output is correct
10 Correct 1 ms 596 KB Output is correct
11 Correct 1 ms 596 KB Output is correct
12 Correct 1 ms 672 KB Output is correct
13 Correct 1 ms 596 KB Output is correct
14 Correct 2 ms 596 KB Output is correct
15 Correct 3 ms 596 KB Output is correct
16 Correct 8 ms 888 KB Output is correct
17 Correct 8 ms 800 KB Output is correct
18 Correct 13 ms 1036 KB Output is correct
19 Correct 10 ms 852 KB Output is correct
20 Correct 17 ms 1136 KB Output is correct