Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- #define lli long long
- #define pii pair<int, int>
- #define r first
- #define c second
- /// U R D L
- pii ctrl[4] = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}};
- vector<vector<int>> board;
- int q, row, col;
- lli sum;
- int main(){
- int x;
- bool change;
- scanf("%d", &q);
- for(int k = 1; k <= q; ++k){
- scanf("%d %d", &row, &col);
- board.assign(row + 2, vector<int>(col + 2, 0));
- for(int i = 1; i <= row; ++i){
- for(int j = 1; j <= col; ++j){
- scanf("%d", &x);
- board[i][j] = x;
- }
- }
- sum = 0;
- change = true;
- while(change){
- change = false;
- vector<pii> fail;
- for(int i = 1; i <= row; ++i){
- for(int j = 1; j <= col; ++j){
- sum += board[i][j];
- if(board[i][j] != 0){
- double mean;
- int add = 0;
- int cnt = 0;
- for(int d = 0; d < 4; ++d){
- int nr = i + ctrl[d].r;
- int nc = j + ctrl[d].c;
- if(nr > 0 && nr <= row && nc > 0 && nc <= col){
- while(nr > 0 && nr <= row && nc > 0 && nc <= col){
- if(board[nr][nc] != 0){
- add += board[nr][nc];
- ++cnt;
- break;
- }
- nr += ctrl[d].r;
- nc += ctrl[d].c;
- }
- }
- }
- if(cnt != 0){
- mean = (double)add / (double)cnt;
- if(mean > board[i][j]){
- fail.push_back({i, j});
- change = true;
- }
- }
- }
- }
- }
- for(auto x : fail){
- board[x.r][x.c] = 0;
- }
- }
- cout << "Case #" << k << ": " << sum << "\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement