Submission #1204677

#TimeUsernameProblemLanguageResultExecution timeMemory
1204677aritro_Mosaic (IOI24_mosaic)C++20
22 / 100
1000 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){
    //subtask 4
    int n=x.size();
    int q=t.size();
    vector<vector<long long>> grid(n,vector<long long>(n));
    for(int i=0;i<n;i++){
        grid[i][0]=y[i];
        for(int j=1;j<n;j++){
            if(i==0) grid[i][j]=x[j];
            else{
                if(grid[i-1][j]==0&&grid[i][j-1]==0) grid[i][j]=1;
                else grid[i][j]=0;
            }
        }
    }
    vector<vector<long long>> preSum(n+1,vector<long long>(n));
    preSum[0][0]=grid[0][0];
    for(int i=1;i<n;i++) preSum[0][i]=preSum[0][i-1]+grid[0][i];
    for(int i=1;i<n;i++) preSum[i][0]=preSum[i-1][0]+grid[i][0];
    for(int i=1;i<n;i++){
        for(int j=1;j<n;j++){
            int val=preSum[i-1][j]+preSum[i][j-1]-preSum[i-1][j-1]+grid[i][j];
            preSum[i][j]=val;
        }
    }
    vector<long long> ans(q,0);
    for(int query=0;query<q;query++){
        int top=t[query],bottom=b[query];
        int left=l[query],right=r[query];
        long long cnt=preSum[bottom][right];
        if(top>0) cnt-=preSum[top-1][right];
        if(left>0) cnt-=preSum[bottom][left-1];
        if(top>0&&left>0) cnt+=preSum[top-1][left-1];
        ans[query]=cnt;
    }
    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...