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