Submission #1225370

#TimeUsernameProblemLanguageResultExecution timeMemory
1225370VMaksimoski008Mosaic (IOI24_mosaic)C++20
0 / 100
82 ms15944 KiB
#include "mosaic.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
const int N = 2e5 + 5;

int H[3][N], V[N][3];

int get(int r, int c) {
    if(r < 3) return H[r][c];
    if(c < 3) return V[r][c];
    if(r <= c) return H[2][c-r+2];
    return V[r-c+2][2];
}

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(), q = t.size();
    vector<ll> ans(q);

    for(int i=0; i<n; i++) {
        H[0][i] = x[i];
        V[i][0] = y[i];
    }

    for(int i=1; i<3; i++)
        for(int j=1; j<n; j++)
            H[i][j] = (H[i-1][j] + H[i][j-1] == 0);
    for(int j=1; j<3; j++)
        for(int i=1; i<n; i++)
            V[i][j] = (V[i-1][j] + V[i][j-1] == 0);

    for(int i=0; i<q; i++) 
        ans[i] = get(t[i], l[i]);
    return ans;
}
#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...