Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <cmath>
- using namespace std;
- int n = 0;
- int index(int x, int y)
- {
- return x*n +y;
- }
- int main(){
- int m = 0;
- cin >> n;
- cin >> m;
- int**grid = new int*[n]();
- for(int i =0;i<n;i++)
- {
- grid[i] = new int[n]();
- for(int j =0;j<n;j++)
- {
- cin >> grid[i][j];
- }
- }
- // int** charms = new int*[m]();
- int* safe = new int[n*n]();
- for(int i =0;i<m;i++)
- {
- int* charms = new int[3]();
- cin >> charms[0];
- cin >> charms[1];
- cin >> charms[2];
- for(int x = -charms[2]; x <= charms[2]; x++)
- {
- for(int y = charms[2] - abs(x); y >= -(charms[2] - abs(x)); y-- )
- {
- int x1 = charms[0] + x;
- int y1 = charms[1] + y;
- if(x1 > 0 && y1 > 0 && x1 < n+1 && y1 < n+1)
- safe[(x1-1)*n + y1 - 1] = 1;
- }
- }
- }
- //cout << "SAFE\n";
- for(int i =0;i<n;i++)
- {
- }
- int* dp = new int[n*n];
- int out = 0;
- if(safe[0] == 1 && safe[n*n -1] == 1)
- {
- for(int i =0;i<n;i++)
- {
- for(int j =0;j<n;j++)
- {
- if(i==0 && j== 0 && safe[0] == 1)
- {
- dp[index(i,j)] = grid[0][0];
- }
- else if(safe[i *n +j] == 1)
- {
- if(j>0 && safe[i *n +j-1] == 1 && i>0 && safe[(i -1)*n +j] == 1)
- {
- dp[index(i,j)] = max(dp[index(i-1,j)], dp[index(i,j-1)]) != -10001 ? grid[i][j] + max(dp[index(i-1,j)], dp[index(i,j-1)]) : -10001;
- }
- else if(j>0 && safe[i *n +j-1] == 1)
- {
- dp[i*n + j] = dp[index(i,j-1)] != -10001 ? grid[i][j] + dp[index(i,j-1)]: 0;
- }
- else if(i>0 && safe[(i -1)*n +j] == 1)
- dp[i*n + j] = dp[index(i-1,j)] != -10001 ? grid[i][j] + dp[index(i-1,j)]: 0;
- else
- dp[index(i,j)] = -10001;
- // cout << i<<","<<j<<":" << dp[i*n + j][0]<<":"<< dp[i*n + j][1]<<"\n";
- }
- else
- {
- dp[index(i,j)] = -10001;
- }
- }
- }
- /*for(int i =0;i<n;i++)
- {
- for(int j=0;j<n;j++)
- {
- cout << dp[index(i, j)];
- cout << " ";
- }
- cout << "\n";
- }*/
- out = dp[n*n - 1];
- if(out == -10001)
- cout << "NO\n";
- else{
- cout << "YES\n";
- cout << out;
- }
- }
- else
- cout << "NO\n";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement