Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: Surachate

Problemset: บริษัททำความสะอาด

Language: cpp

Time: 0.005 second

Submitted On: 2026-10-13 21:01:53

#include <iostream>
#include <string>
#include <cctype>
#include <algorithm>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;
    
    string s;
    cin >> s;
    
    int arr[500][500] = {};
    int row = 0, col = 0;
    int num = 0;
    bool reading = false;

    for (char x : s) {
        if (isdigit(x)) {
            num = num * 10 + (x - '0');
            reading = true;
        } else if (reading) {
            arr[row][col] = num;
            col++;

            if (col == n) {
                col = 0;
                row++;
            }

            num = 0;
            reading = false;
        }
    }

    if (reading && row < n) {
        arr[row][col] = num;
    }

    long long sum = 0;

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            int h = arr[i][j];

            if (h == 0) continue;

            sum += 4LL * h + 2;

            if (i > 0)
                sum -= min(h, arr[i-1][j]);

            if (i < n-1)
                sum -= min(h, arr[i+1][j]);

            if (j > 0)
                sum -= min(h, arr[i][j-1]);

            if (j < n-1)
                sum -= min(h, arr[i][j+1]);
        }
    }

    cout << sum << '\n';
    return 0;

}