# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1204598 | aritro_ | Mosaic (IOI24_mosaic) | C++20 | 0 ms | 0 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 5
int n=x.size();
int q=t.size();
vector<long long> ans(q,0);
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=(1LL*(r[query]-l[query]+1))*(1LL*(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;
}
void solve(){
int n;
cin>>n;
vector<int> x(n),y(n);
for(int i=0;i<n;i++) cin>>x[i];
for(int i=0;i<n;i++) cin>>y[i];
int q;
cin>>q;
vector<int> t(q),b(q),l(q),r(q);
for(int i=0;i<q;i++) cin>>t[i];
for(int i=0;i<q;i++) cin>>b[i];
for(int i=0;i<q;i++) cin>>l[i];
for(int i=0;i<q;i++) cin>>r[i];
vector<long long> ans=mosaic(x,y,t,b,l,r);
for(auto u:ans) cout<<u<<endl;
return;
}
int main(){
int t=1;
//cin>>t;
for(int tc=1;tc<=t;tc++){
//cout<<"Case "<<tc<<": ";
solve();
}
return 0;
}