Hướng dẫn giải của MATRIX04: Tổng các số không nằm trên đường bao


Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.

Hướng dẫn giải

Tổng các số không nằm trên đường bao là tổng các ô có hàng từ 2 đến n−1 và cột từ 2 đến m−1 (phần trong của bảng). Bài yêu cầu đọc toàn bộ bảng nên O(n·m) là tối ưu; viết 1 sub (đạt 20/20 test).

Sub 1: Đọc bảng và cộng các ô bên trong — ~O(n·m)~

Khi đọc từng ô (i, j), cộng vào tổng nếu ô không nằm trên đường bao. Đạt 20/20 test.

#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    if (fopen("MATRIX04.INP", "r")) {
        freopen("MATRIX04.INP", "r", stdin);
        freopen("MATRIX04.OUT", "w", stdout);
    }
    int n, m;
    cin >> n >> m;
    long long sum = 0;
    // Các ô không nằm trên đường bao là các ô ở hàng 2..n-1 và cột 2..m-1
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            long long a;
            cin >> a;
            if (i != 0 && i != n - 1 && j != 0 && j != m - 1) sum += a;
        }
    }
    cout << sum << "\n";
    return 0;
}

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.