Skip to content

Conversation

@flydongwoo
Copy link
Collaborator

๐Ÿ”— ๋ฌธ์ œ ๋งํฌ

https://www.acmicpc.net/problem/17144

โœ”๏ธ ์†Œ์š”๋œ ์‹œ๊ฐ„

40๋ถ„

โœจ ์ˆ˜๋„ ์ฝ”๋“œ

ํ›„๋‹ค๋‹ฅ 23์ฃผ์ฐจ PR๋„ ์ž‘์„ฑํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ ์—ญ์‹œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

ํ•ต์‹ฌ์€ ์•„๋ž˜์˜ ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ๋‹จ๊ณ„๋ฅผ T๋ฒˆ ๋ฐ˜๋ณตํ•˜๋Š”๊ฑด๋ฐ์š”!

  1. ๋ชจ๋“  ๋ฏธ์„ธ๋จผ์ง€๊ฐ€ ๋™์‹œ์— ์ธ์ ‘ํ•œ ๋„ค ๋ฐฉํ–ฅ์œผ๋กœ ํผ์ ธ๋‚˜๊ฐ‘๋‹ˆ๋‹ค
  2. ์œ„์ชฝ๊ณผ ์•„๋ž˜์ชฝ ๊ณต๊ธฐ์ฒญ์ •๊ธฐ๊ฐ€ ๊ฐ๊ฐ ์ •ํ•ด์ง„ ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐ”๋žŒ์„ ์ผ์œผ์ผœ ๋ฏธ์„ธ๋จผ์ง€๋ฅผ ํ•œ ์นธ์”ฉ ์ด๋™์‹œํ‚ต๋‹ˆ๋‹ค
    ๊ทธ๋Ÿฐ๋ฐ, ๋” ์ค‘์š”ํ•œ ๊ฒƒ์€ '๋™์‹œ์—' ์ผ์–ด๋‚œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

์šฐ์„ , ์ œ ์ฝ”๋“œ๋ฅผ ๋ณด์‹œ์ฃ .

#include <iostream>
#include <vector>
#include <numeric>

using namespace std;

int R, C, T;
vector<vector<int>> room;
int purifier_top_r = -1;
int purifier_bottom_r = -1;

int dr[] = { 0, 1, 0, -1 };
int dc[] = { 1, 0, -1, 0 };

void spread_dust() {
    vector<vector<int>> diffused_dust(R, vector<int>(C, 0));

    for (int r = 0; r < R; r++) {
        for (int c = 0; c < C; c++) {
            if (room[r][c] > 0) {
                int spread_amount = room[r][c] / 5;
                int spread_count = 0;

                for (int i = 0; i < 4; i++) {
                    int nr = r + dr[i];
                    int nc = c + dc[i];

                    if (nr >= 0 && nr < R && nc >= 0 && nc < C && room[nr][nc] != -1) {
                        diffused_dust[nr][nc] += spread_amount;
                        spread_count++;
                    }
                }
                room[r][c] -= spread_amount * spread_count;
            }
        }
    }

    for (int r = 0; r < R; r++) {
        for (int c = 0; c < C; c++) {
            room[r][c] += diffused_dust[r][c];
        }
    }
}

void circulate_air() {
    for (int r = purifier_top_r - 1; r > 0; r--) {
        room[r][0] = room[r - 1][0];
    }
    for (int c = 0; c < C - 1; c++) {
        room[0][c] = room[0][c + 1];
    }
    for (int r = 0; r < purifier_top_r; r++) {
        room[r][C - 1] = room[r + 1][C - 1];
    }
    for (int c = C - 1; c > 1; c--) {
        room[purifier_top_r][c] = room[purifier_top_r][c - 1];
    }
    room[purifier_top_r][1] = 0;

    for (int r = purifier_bottom_r + 1; r < R - 1; r++) {
        room[r][0] = room[r + 1][0];
    }
    for (int c = 0; c < C - 1; c++) {
        room[R - 1][c] = room[R - 1][c + 1];
    }
    for (int r = R - 1; r > purifier_bottom_r; r--) {
        room[r][C - 1] = room[r - 1][C - 1];
    }
    for (int c = C - 1; c > 1; c--) {
        room[purifier_bottom_r][c] = room[purifier_bottom_r][c - 1];
    }
    room[purifier_bottom_r][1] = 0;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    cin >> R >> C >> T;
    room.resize(R, vector<int>(C));

    for (int i = 0; i < R; i++) {
        for (int j = 0; j < C; j++) {
            cin >> room[i][j];
            if (room[i][j] == -1) {
                if (purifier_top_r == -1) {
                    purifier_top_r = i;
                    purifier_bottom_r = i + 1;
                }
            }
        }
    }

    while (T--) {
        spread_dust();
        circulate_air();
    }

    int total_dust = 0;
    for (int i = 0; i < R; i++) {
        for (int j = 0; j < C; j++) {
            if (room[i][j] > 0) {
                total_dust += room[i][j];
            }
        }
    }

    cout << total_dust << endl;

    return 0;
}

์ฝ”๋“œ์— ๋Œ€ํ•œ ์„ค๋ช…๊ณผ ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ๋œ ๋‚ด์šฉ์„ ํ•ฉ์ณ์„œ ์•„๋ž˜์— ๊ธฐ์ˆ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๐Ÿ“š ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ๋œ ๋‚ด์šฉ

  1. ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ

๋งŒ์•ฝ, ์›๋ž˜์˜ room ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ, ํ™•์‚ฐ๋œ ๋ฏธ์„ธ๋จผ์ง€๋ฅผ ๋ฐ”๋กœ room ๋ฐฐ์—ด์— ๋”ํ•ด๋ฒ„๋ฆฌ๋ฉด ์–ด๋–ป๊ฒŒ ๋˜์—ˆ์„๊นŒ์š”?

(0,0) ์นธ์˜ ๋ฏธ์„ธ๋จผ์ง€๊ฐ€ (0,1)๋กœ ํ™•์‚ฐ -> room[0][1] ๊ฐ’์ด ์ฆ๊ฐ€ํ•˜๋ฏ€๋กœ
๋‚˜์ค‘์— (0,1) ์นธ์„ ๊ณ„์‚ฐํ•  ๋•Œ, ๋ฐฉ๊ธˆ ํ™•์‚ฐ๋ฐ›์€ ์–‘๊นŒ์ง€ ํฌํ•จํ•ด์„œ ๋˜ ํ™•์‚ฐ์‹œํ‚ค๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค!

์ด๊ฒƒ์€ ๋™์‹œ์— ํ™•์‚ฐ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ์„œ, ๋ณ„๋„์˜ ์ž„์‹œ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•ด์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ œ ์ฝ”๋“œ์—์„œ๋Š”
diffused_dust ๋ผ๋Š”, ๋ชจ๋“  ๊ฐ’์ด 0์œผ๋กœ ์ฑ„์›Œ์ง„ ์ž„์‹œ 2์ฐจ์› ๋ฐฐ์—ด์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
์ด ๋ฐฐ์—ด์€ ์ด๋ฒˆ 1์ดˆ ๋™์•ˆ ๊ฐ ์นธ์— '์ƒˆ๋กœ ์ถ”๊ฐ€๋ ' ๋ฏธ์„ธ๋จผ์ง€์˜ ์–‘๋งŒ ๊ธฐ๋กํ•˜๋Š” ์šฉ๋„์ž…๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ด์ค‘ for๋ฌธ์„ ์ด์šฉํ•ด์„œ room ๋ฐฐ์—ด์„ ํ›‘์–ด๋ด…๋‹ˆ๋‹ค
room ๋ฐฐ์—ด์„ ๋‹ค ํ›‘์—ˆ๋‹ค๋ฉด, ์ด์ œ diffused_dust์—๋Š” ๊ฐ ์นธ์— ์ƒˆ๋กœ ์ถ”๊ฐ€๋  ๋จผ์ง€ ์–‘์ด ๋ชจ๋‘ ๊ธฐ๋ก๋˜์–ด์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค!
๋งˆ์ง€๋ง‰์œผ๋กœ, room ๋ฐฐ์—ด๊ณผ diffused_dust ๋ฐฐ์—ด์„ ํ•ฉ์ณ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค!

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด, 1์ดˆ ๋™์•ˆ์˜ ๋ชจ๋“  ํ™•์‚ฐ์ด ๋‹ค๋ฅธ ์นธ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ๊ณ„์‚ฐ๋œ ํ›„, ํ•œ ๋ฒˆ์— ํ•ฉ์ณ์ง€๋ฏ€๋กœ "๋™์‹œ์—" ํ™•์‚ฐ๋˜๋Š” ํšจ๊ณผ๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

  1. ์—ญ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐ์ดํ„ฐ ์˜ฎ๊ธฐ๊ธฐ

A -> B -> C -> D ์ˆœ์„œ๋กœ ๋ฏธ์„ธ๋จผ์ง€๋ฅผ ์˜ฎ๊ธฐ๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์•˜์„ ๋•Œ,
๋งŒ์•ฝ B = A, C = B, D = C ์ˆœ์„œ๋กœ ์ฝ”๋“œ๋ฅผ ์งœ๋ฉด B = A๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ˆœ๊ฐ„, ์›๋ž˜ B์— ์žˆ๋˜ ๊ฐ’์ด ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ, C = B๋ฅผ ํ•  ๋•Œ ์ž˜๋ชป๋œ ๊ฐ’(A์˜ ๊ฐ’)์ด C๋กœ ๋“ค์–ด๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ”๋žŒ์˜ ๋ฐฉํ–ฅ๊ณผ ๋ฐ˜๋Œ€๋กœ ๊ฐ’์„ ์˜ฎ๊ฒจ์•ผ ํ•˜๋Š”๋ฐ

  1. ์•„๋ž˜ -> ์œ„: ์™ผ์ชฝ ๋งจ ์•„๋ž˜ ์นธ๋ถ€ํ„ฐ ์œ„๋กœ ์˜ฌ๋ผ๊ฐ€๋ฉด์„œ, ๋ฐ”๋กœ ์•„๋ž˜ ์นธ์˜ ๊ฐ’์„ ํ˜„์žฌ ์นธ์œผ๋กœ ๋ณต์‚ฌ...
  2. ์˜ค๋ฅธ์ชฝ -> ์™ผ์ชฝ: ๋งจ ์œ„ ์˜ค๋ฅธ์ชฝ ์นธ๋ถ€ํ„ฐ ์™ผ์ชฝ์œผ๋กœ ๊ฐ€๋ฉด์„œ, ๋ฐ”๋กœ ์˜ค๋ฅธ์ชฝ ์นธ์˜ ๊ฐ’์„ ํ˜„์žฌ ์นธ์œผ๋กœ ๋ณต์‚ฌ...
  3. ์œ„ -> ์•„๋ž˜: ์˜ค๋ฅธ์ชฝ ๋งจ ์œ„ ์นธ๋ถ€ํ„ฐ ์•„๋ž˜๋กœ ๋‚ด๋ ค์˜ค๋ฉด์„œ...
  4. ์™ผ์ชฝ -> ์˜ค๋ฅธ์ชฝ: ๊ณต๊ธฐ์ฒญ์ •๊ธฐ ์˜ค๋ฅธ์ชฝ ์นธ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ...

์ด๋ ‡๊ฒŒ ๋ฐ”๋žŒ์˜ ์—ญ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ’์„ ํ•˜๋‚˜์”ฉ ๋ฎ์–ด์“ฐ๋ฉด, ์›๋ž˜ ๊ฐ’์ด ์‚ฌ๋ผ์ง€๊ธฐ ์ „์— ์•ˆ์ „ํ•˜๊ฒŒ ๋‹ค์Œ ์นธ์œผ๋กœ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋งˆ์ง€๋ง‰์œผ๋กœ ๊ณต๊ธฐ์ฒญ์ •๊ธฐ ๋ฐ”๋กœ ์˜ค๋ฅธ์ชฝ ์นธ์€ 0์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค!

๋ณต์žกํ•œ ๊ฒƒ ๊ฐ™์ง€๋งŒ ์ฐจ๊ทผํžˆ ์ฝ์–ด๋ณด๋ฉด ๋‹น์—ฐํ•œ ์–˜๊ธฐ๋“ค์ด๊ธด ํ•ฉ๋‹ˆ๋‹ค ใ…Žใ…Ž
๋‚ด์ผ ๋‚จ์€ PR ์˜ฌ๋ฆด๊ฒŒ์š”!

@mj010504
Copy link
Collaborator

mj010504 commented Sep 8, 2025

์˜ˆ์ „์— ๊ต‰์žฅํžˆ ์‹œ๊ฐ„์จ๊ฐ€๋ฉด์„œ ํ‘ผ ๋ฌธ์ œ๋ผ ๊ธฐ์–ต์ด ๋‚˜๋„ค์š”..
์ €๋„ ํ’€๋ฉด์„œ ๋ฌธ์ œ์—์„  ๋™์‹œ์— ์ผ์–ด๋‚˜๋Š” ์ž‘์—…์ด์ง€๋งŒ ์ฝ”๋“œ๋Š” ์ˆœ์„œ๋Œ€๋กœ ์งœ์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž„์‹œ๋กœ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฏธ์„ธ๋จผ์ง€๋ฅผ ๋ฐฉํ–ฅ๋Œ€๋กœ ์ด๋™์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๊ฐ ๊ฒฝ๊ณ„๊ฐ’์„ ๋ฏธ๋ฆฌ ๋ณ€์ˆ˜์— ์ง€์ •ํ•ด๋†“๊ณ  ํ’€์—ˆ๋„ค์š”. ์˜ˆ์ „์—๋Š” ๊น”๋”ํ•˜๊ฒŒ ์งœ๋Š” ์‹ค๋ ฅ์ด ๋ถ€์กฑํ•ด์„œ ๊ทธ๋Ÿฐ์ง€ ๊ฐ€๋…์„ฑ์ด ์ข‹์ง„ ์•Š์Šต๋‹ˆ๋‹ค. ๋™์šฐ๋‹˜์€ ๊ทธ ๋ถ€๋ถ„ ์‹ ๊ฒฝ์จ์„œ ์ž˜ ํ‘ธ์‹  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์ˆ˜๊ณ ํ•˜์…จ์Šต๋‹ˆ๋‹ค!

๋ฏธ์„ธ๋จผ์ง€ ์•ˆ๋…•!
#include<bits/stdc++.h>
using namespace std;

// ์šฐํ•˜์ขŒ์ƒ
int dx[4] = {0, 1, 0, -1};
int dy[4] = {1, 0, -1, 0};


struct p{
  int x,y,cnt;
};

int main() {

    //freopen("input.txt", "rt", stdin);
     ios_base::sync_with_stdio(false);
    cin.tie(0);

   int n, m, t;
   cin >> n >> m >> t;

    queue<p> q;
    vector<vector<int>> v(n, vector<int> (m));
    pair<int, int> start, end;
    int sd = 0; // 0, 3, 2, 1
    int ed = 0; // 0, 1, 2, 3
   for(int i = 0; i < n; i++) {
    for(int j = 0; j < m; j++) {
        cin >> v[i][j];

        if(v[i][j] >= 5) q.push({i, j, v[i][j]});
        else if(v[i][j] == -1) {
            end = {i, j};
            start  = {i -1, j};
        } 
    }
   }
   for(int i = 0; i < t; i++) {
    vector<vector<int>> tv = v;
    
    while(!q.empty()) {
        p tp = q.front();
        q.pop();


            int temp = 0;
            for(int k = 0; k < 4; k++) {
                int xx = tp.x + dx[k];
                int yy = tp.y + dy[k];
                if(xx >= 0 && xx < n && yy >= 0 && yy < m  && v[xx][yy] >= 0) {
                    tv[xx][yy] += tp.cnt / 5;
                    temp++;
                }
            }

            tv[tp.x][tp.y] -= (tp.cnt / 5) * temp;
        
    }

    int ts = tv[0][0];
    int se = tv[start.first][m-1];
    int ee = tv[end.first][m-1];
    int bs = tv[n-1][0];

    for(int k = 0; k <= m - 1; k++) {
        tv[0][k] = tv[0][k + 1];
        tv[n-1][k] = tv[n-1][k + 1];
    } 

    for(int k = m -1; k >= 2; k--) {
        tv[start.first][k] = tv[start.first][k-1];
        tv[end.first][k] = tv[end.first][k-1];
    }

    tv[start.first][1] = 0;
    tv[end.first][1] = 0;

    for(int k= start.first -1; k >= 2; k--) {
        tv[k][0] = tv[k -1][0];
    } 

    tv[1][0] = ts;

    for(int k = 0; k <= start.first - 2; k++) {
        tv[k][m-1] = tv[k + 1][m - 1];
    }

    tv[start.first - 1][m-1] = se;

    for(int k = end.first + 1; k < n - 2; k++) {
        tv[k][0] = tv[k + 1][0];        
    } 

    tv[n -2][0] = bs;

    for(int k = n - 1; k > end.first + 1; k--) {
        tv[k][m-1] = tv[k -1][m-1];
    }

    tv[end.first + 1][m -1] = ee;
    
    for(int i = 0; i < n; i++) {
    for(int j = 0; j < m; j++) {
        if(tv[i][j] >= 5) q.push({i, j, tv[i][j]});
    }
    }

    v = tv;
    
   }

   int sum = 0;
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < m; j++) {
            if(v[i][j] > 0) sum += v[i][j];
        }
     }

 cout << sum;

}

@hyeokbini
Copy link
Collaborator

์ฒ˜์Œ ๋ฌธ์ œ๋ฅผ ์ ‘ํ•˜๊ณ  ๊ตฌํ˜„ํ•  ๋•Œ ํ•˜๋ฉด์„œ๋„ ์ด๊ฒŒ ๋งž๋‚˜..? ์‹ถ์€ ์ƒ๊ฐ์ด ๊ณ„์† ๋“ค์—ˆ๋˜ ๋ฌธ์ œ๋„ค์š”.

์ฒญ์†Œํ•˜๋Š” ๋กœ์ง clean()์—์„œ๋Š” ์ธ๋ฑ์‹ฑ์„ ์ž˜ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋ฒ•์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๊ณ , ํ™•์‚ฐํ•˜๋Š” ๋กœ์ง spread()์—์„œ๋Š” ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์ž„์‹œ ๋ฐฐ์—ด ์‚ฌ์šฉ์— ๋Œ€ํ•ด ๋ฆฌ๋งˆ์ธ๋“œํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜๋Š” ์ œ์ถœ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ๊ณ ์ƒํ•˜์…จ์–ด์š”!

๋กœ๋ด‡ ์ฒญ์†Œ๊ธฐ / c++
#include <bits/stdc++.h>

using namespace std;

int dx[4] = {1, 0, -1, 0};
int dy[4] = {0, -1, 0, 1};
int n, m, t;
vector<vector<int>> arr;
vector<int> cleaneridx;

void spread()
{
    vector<vector<int>> tmparr = arr;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            if (arr[i][j] == 0)
            {
                continue;
            }
            int curidxdust = arr[i][j];
            int spreaddustamount = curidxdust / 5;
            int spreaddir = 0;
            for (int t = 0; t < 4; t++)
            {
                int nx = dx[t] + i;
                int ny = dy[t] + j;
                if (nx >= n || ny >= m || nx < 0 || ny < 0)
                {
                    continue;
                }
                if (arr[nx][ny] == -1)
                {
                    continue;
                }
                tmparr[nx][ny] += spreaddustamount;
                spreaddir++;
            }
            tmparr[i][j] -= spreaddustamount * spreaddir;
        }
    }
    arr = tmparr;
    return;
}

void clean() // cleaneridx[0]์€ ์œ„์ชฝ ๊ธฐ์ค€์ , cleaneridx[1]์€ ์•„๋ž˜์ชฝ ๊ธฐ์ค€์ 
{
    vector<vector<int>> tmparr = arr;
    for (int i = 1; i < m - 1; i++)
    {
        tmparr[cleaneridx[0]][i + 1] = arr[cleaneridx[0]][i];
    }
    tmparr[cleaneridx[0]][1] = 0;
    for (int i = cleaneridx[0]; i > 0; i--)
    {
        tmparr[i - 1][m - 1] = arr[i][m - 1];
    }
    for (int i = m - 1; i > 0; i--)
    {
        tmparr[0][i - 1] = arr[0][i];
    }
    for (int i = 0; i < cleaneridx[0] - 1; i++)
    {
        tmparr[i + 1][0] = arr[i][0];
    }

    for (int i = 1; i < m - 1; i++)
    {
        tmparr[cleaneridx[1]][i + 1] = arr[cleaneridx[1]][i];
    }
    tmparr[cleaneridx[1]][1] = 0;
    for (int i = cleaneridx[1]; i < n - 1; i++)
    {
        tmparr[i + 1][m - 1] = arr[i][m - 1];
    }
    for (int i = m - 1; i > 0; i--)
    {
        tmparr[n - 1][i - 1] = arr[n - 1][i];
    }
    for (int i = n - 1; i > cleaneridx[1] + 1; i--)
    {
        tmparr[i - 1][0] = arr[i][0];
    }
    arr = tmparr;
    return;
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    //freopen("test.txt", "rt", stdin);
    cin >> n >> m >> t;
    arr.resize(n, vector<int>(m));
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            cin >> arr[i][j];
            if (arr[i][j] == -1)
            {
                cleaneridx.push_back(i);
            }
        }
    }
    while (t--)
    {
        spread();
        clean();
    }
    int ans = 0;
    for (auto i : arr)
    {
        for (auto j : i)
        {
            ans += j;
        }
    }
    cout << ans + 2;
    return 0;
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants