#include <bits/stdc++.h>
#include "horses.h"
using namespace std;
vector<long long>stx,sty,vx,vy;
set<long long>s;
long long mod=1e9+7;
int n;
void updatey(int i,int l,int r,int x,int k)
{
if(l==r)sty[i]=k;
else
{
int m=(l+r)/2;
if(x<=m)updatey(2*i,l,m,x,k);
else updatey(2*i+1,m+1,r,x,k);
sty[i]=max(sty[2*i],sty[2*i+1]);
}
}
void updatex(int i,int l,int r,int x,int k)
{
if(l==r)stx[i]=k;
else
{
int m=(l+r)/2;
if(x<=m)updatex(2*i,l,m,x,k);
else updatex(2*i+1,m+1,r,x,k);
stx[i]=(stx[2*i]*stx[2*i+1])%mod;
}
}
long long getx(int i,int l,int r,int tl,int tr)
{
if(tl>r||l>tr||l>r)return 1;
if(tl<=l&&r<=tr)return stx[i];
int m=(l+r)/2;
return (getx(2*i,l,m,tl,tr)*getx(2*i+1,m+1,r,tl,tr))%mod;
}
long long gety(int i,int l,int r,int tl,int tr)
{
if(tl>r||l>tr||l>r)return 1;
if(tl<=l&&r<=tr)return sty[i];
int m=(l+r)/2;
return max(gety(2*i,l,m,tl,tr),gety(2*i+1,m+1,r,tl,tr));
}
long long vrni()
{
if(s.size()==0)return gety(1,0,n-1,0,n-1);
long long sum=0,b=n,res=stx[1];
for(auto it=s.rbegin();it!=s.rend();it++)
{
int x=*it;
long long a=gety(1,0,n-1,x,b-1);
if(a>sum)
{
res=(getx(1,0,n-1,0,x)*a)%mod;
sum=a;
}
sum=sum*vx[x];
b=x;
if(sum>mod)break;
}
if(sum<mod)
{
long long a=gety(1,0,n-1,0,b-1);
if(a>sum)
{
res=a;
}
}
return res;
}
int init(int N, int x1[], int y1[])
{
n=N;
stx.resize(4*n+1);
sty.resize(4*n+1);
for(int i=0;i<n;i++)
{
if(x1[i]!=1)s.insert(i);
updatex(1,0,n-1,i,x1[i]);
updatey(1,0,n-1,i,y1[i]);
vx.push_back(x1[i]);
vy.push_back(y1[i]);
}
return vrni();
}
int updateX(int pos, int val)
{
updatex(1,0,n-1,pos,val);
if(vx[pos]==1&&val>1)
{
s.insert(pos);
}
else if(vx[pos]>1&&val==1)s.erase(pos);
vx[pos]=val;
return vrni();
}
int updateY(int pos, int val)
{
updatey(1,0,n-1,pos,val);
vy[pos]=val;
return vrni();
}
# | 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... |