Submission #1275464

#TimeUsernameProblemLanguageResultExecution timeMemory
1275464baodatMosaic (IOI24_mosaic)C++20
12 / 100
1118 ms2162688 KiB
#include <bits/stdc++.h>
using namespace std;

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

    // a: grid of colors (0/1), 0-based indexing
    vector<vector<int>> a(n, vector<int>(n, 0));

    // Initialize first row and first column from X and Y
    for (int j = 0; j < n; ++j) a[0][j] = X[j];
    for (int i = 0; i < n; ++i) a[i][0] = Y[i];

    // Fill rest of the grid per rule
    for (int i = 1; i < n; ++i) {
        for (int j = 1; j < n; ++j) {
            a[i][j] = (a[i-1][j] == 0 && a[i][j-1] == 0) ? 1 : 0;
        }
    }

    // Build 1-based prefix sums: pref[i][j] = sum over a[0..i-1][0..j-1]
    vector<vector<long long>> pref(n + 1, vector<long long>(n + 1, 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];
        }
    }

    // Answer queries
    vector<long long> C(q);
    for (int k = 0; k < q; ++k) {
        int t = T[k], b = B[k], l = L[k], r = R[k];
        // Convert to 1-based for prefix rectangle [t..b] x [l..r]
        int i1 = t + 1, i2 = b + 1, j1 = l + 1, j2 = r + 1;
        long long ans = pref[i2][j2] - pref[t][j2] - pref[i2][l] + pref[t][l];
        C[k] = ans;
    }

    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...