제출 #1317996

#제출 시각아이디문제언어결과실행 시간메모리
1317996foxserg모자이크 (IOI24_mosaic)C++20
22 / 100
1202 ms2162688 KiB
#include <bits/stdc++.h>
#include "mosaic.h"

using namespace std;

using ll = long long;

vector <ll> mosaic(vector <int> X, vector <int> Y,
    vector <int> T, vector <int> B, vector <int> L, vector <int> R) {
    
    int n = X.size();
    int q = T.size();

    int A[n][n];
    for (int i = 0; i < n; ++i) {
        A[0][i] = X[i];
    }
    for (int i = 0; i < n; ++i) {
        A[i][0] = Y[i];
    }

    for (int i = 1; i < n; ++i) {
        for (int j = 1; j < n; ++j) {
            if (A[i - 1][j] || A[i][j - 1]) {
                A[i][j] = 0;
            } else {
                A[i][j] = 1;
            }
        }
    }

    int pref[n + 1][n + 1];
    for (int i = 0; i <= n; ++i) {
        pref[0][i] = 0;
        pref[i][0] = 0;
    }

    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= n; ++j) {
            pref[i][j] = pref[i - 1][j] + pref[i][j - 1] - pref[i - 1][j - 1] + A[i - 1][j - 1];
        }
    }

    vector <ll> C(q);
    for (int i = 0; i < q; ++i) {
        C[i] = pref[B[i] + 1][R[i] + 1];
        C[i] -= pref[B[i] + 1][L[i]];
        C[i] -= pref[T[i]][R[i] + 1];
        C[i] += pref[T[i]][L[i]];
    }

    return C;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...