#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 5
int n=x.size();
int q=t.size();
vector<long long> ans(q,0);
bool xyz=1;
for(int i=0;i<n;i++){
if(x[i]!=0||y[i]!=0) xyz=0;
}
if((!xyz)||n==2){
vector<vector<int>> grid(n,vector<int>(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;
}
}
}
for(int query=0;query<q;query++){
int cnt=0;
for(int i=t[query];i<=b[query];i++){
for(int j=l[query];j<=r[query];j++){
if(grid[i][j]==1) cnt++;
}
}
ans[query]=cnt;
}
return ans;
}
for(int query=0;query<q;query++){
if(r[query]==0||b[query]==0){
ans[query]=0;
continue;
}
bool f1=0,f2=0;
if(t[query]==0){
t[query]++;
f1=1;
}
if(l[query]==0){
l[query]++;
f2=1;
}
long long cnt=(r[query]-l[query]+1)*(b[query]-t[query]+1);
ans[query]=cnt/2;
if(cnt%2==1){
if((t[query]%2)==(l[query]%2)) ans[query]++;
}
if(f1) t[query]--;
if(f2) l[query]--;
}
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |