#include <bits/stdc++.h>
using namespace std;
/**ifstream fin ("date.in");
ofstream fout ("date.out");
#define cin fin
#define cout fout**/
typedef long long ll;
const int MAXN=5010;
const int MAXQ=200010;
vector <ll> rez;
int a[MAXN][MAXN],n,q,l[MAXN],c[MAXN];
ll s[MAXN][MAXN];
struct query{
int x1,y1,x2,y2;
}v[MAXQ];
ll f (int x1, int x2, int y1, int y2){
return s[x2][y2]-s[x1-1][y2]-s[x2][y1-1]+s[x1-1][y1-1];
}
void solve (){
for (int i=1;i<=n;++i){
a[1][i]=l[i];
}
for (int i=1;i<=n;++i){
a[i][1]=c[i];
}
for (int i=2;i<=n;++i){
for (int j=2;j<=n;++j){
if (a[i][j-1]==a[i-1][j] and a[i][j-1]==0) a[i][j]=1;
else a[i][j]=0;
}
}
for (int i=1;i<=n;++i){
for (int j=1;j<=n;++j){
s[i][j]=a[i][j]+s[i][j-1]+s[i-1][j]-s[i-1][j-1];
}
}
for (int i=1;i<=q;++i){
rez.push_back (f (v[i].x1,v[i].x2,v[i].y1,v[i].y2));
}
}
vector<ll> mosaic(vector<int> x, vector<int> y,vector<int> x1, vector<int> x2,vector<int> y1, vector<int> y2){
n=x.size ();
q=x1.size ();
for (int i=0;i<n;++i){
l[i+1]=x[i];
c[i+1]=y[i];
}
for (int i=0;i<q;++i){
x1[i]++;
x2[i]++;
y1[i]++;
y2[i]++;
v[i+1]={x1[i],y1[i],x2[i],y2[i]};
}
solve ();
return rez;
}
| # | 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... |