#include<iostream>
#include<algorithm>
#include<vector>
#include "mosaic.h"
using namespace std;
const int MAX_N=2e5+5;
int n,q;
vector<long long>ans;
int a1[3][MAX_N];
int a2[MAX_N][3];
int a[2*MAX_N];
int p[2*MAX_N];
int p0[MAX_N];
int p1[MAX_N];
int id(int x,int y)//min(x,y)>=2
{
int raz=min(x-2,y-2);
x-=raz;y-=raz;
if(x==2)
{
return n-2+y-2;
}
return n-x;
}
std::vector<long long> mosaic(std::vector<int> X, std::vector<int> Y,std::vector<int> T, std::vector<int> B,std::vector<int> L, std::vector<int> R)
{
n=X.size();
q=T.size();
ans.clear();
ans.resize(q);
for(int i=0;i<n;i++)
{
a1[0][i]=X[i];
}
for(int i=0;i<n;i++)
{
a2[i][0]=Y[i];
}
a1[1][0]=a2[1][0];
for(int i=1;i<n;i++)
{
a1[1][i]=(a1[1][i-1]+a1[0][i]==0 ? 1 : 0);
}
a2[0][1]=a1[0][1];
for(int i=1;i<n;i++)
{
a2[i][1]=(a2[i-1][1]+a2[i][0]==0 ? 1 : 0);
}
a1[2][0]=a2[2][0];a1[2][1]=a2[2][1];
for(int i=2;i<n;i++)
{
a1[2][i]=(a1[2][i-1]+a1[1][i]==0 ? 1 : 0);
}
a2[0][2]=a1[0][2];a2[1][2]=a1[1][2];
for(int i=2;i<n;i++)
{
a2[i][2]=(a2[i-1][2]+a2[i][1]==0 ? 1 : 0);
}
for(int i=2;i<n;i++)
{
a[id(2,i)]=a1[2][i];
a[id(i,2)]=a2[i][2];
}
for(int i=1;i<=2*n-5;i++)
{
p[i]=p[i-1]+a[i];
}
for(int i=1;i<=n;i++)
{
p0[i]=p0[i-1]+a1[0][i-1];
p1[i]=p1[i-1]+a1[1][i-1];
}
for(int i=1;i<=q;i++)
{
if(T[i-1]<2)
{
if(T[i-1]==0)
{
ans[i-1]=p0[R[i-1]+1]-p0[L[i-1]];
}
else
{
ans[i-1]=p1[R[i-1]+1]-p1[L[i-1]];
}
continue;
}
if(R[i-1]<2)
{
if(L[i-1]==0 && R[i-1]==1)
{
ans[i-1]=a2[T[i-1]][0]+a2[T[i-1]][1];
}
else if(L[i-1]==0 && R[i-1]==0)
{
ans[i-1]=a2[T[i-1]][0];
}
else ans[i-1]=a2[T[i-1]][1];
continue;
}
while(L[i-1]<2)
{
ans[i-1]+=a2[T[i-1]][L[i-1]++];
}
ans[i-1]+=p[id(T[i-1],R[i-1])]-p[id(T[i-1],L[i-1])-1];
}
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... |