This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "horses.h"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
long long XX[100005];
long long YY[100005];
long long how[100005]={0};
long long MOD=1e9+7;
long long N;
struct A
{
long long l,r;
long long con;
A* nxl,*nxr;
void build(long long ll,long long rr)
{
l=ll;
r=rr;
if(ll+1==rr)
{
con=XX[ll];
return;
}
nxl=(A*) malloc(sizeof(A));
nxr=(A*) malloc(sizeof(A));
nxl->build(ll,(ll+rr)/2);
nxr->build((ll+rr)/2,rr);
con=nxl->con*nxr->con%MOD;
}
void cha(long long where,long long tt)
{
if(l==where&&r==where+1)
{
con=tt;
return;
}
if(where<(l+r)/2) nxl->cha(where,tt);
else nxr->cha(where,tt);
con=nxl->con*nxr->con%MOD;
}
long long Find(long long ll,long long rr)
{
if(ll==l&&rr==r) return con;
if(rr<=(l+r)/2) return nxl->Find(ll,rr);
if(ll>=(l+r)/2) return nxr->Find(ll,rr);
return nxl->Find(ll,(l+r)/2)*nxr->Find((l+r)/2,rr)%MOD;
}
};
A* root;
int init(int N, int X[], int Y[])
{
long long ans=0,t=1,i,now=0;
::N=N;
for(i=0;i<N;i++)
{
XX[i]=(long long) X[i];
YY[i]=(long long) Y[i];
}
root=(A*)malloc(sizeof(root));
root->build(0,N);
for(i=N-1;i>=0;i--)
{
if(YY[i]>now)
{
now=YY[i];
t=YY[i];
}
ans=t*root->Find(0,i+1)%MOD;
if(now<1000000000) now*=XX[i];
else break;
t*=XX[i];
t%=MOD;
}
return (int) ans;
}
int updateX(int pos, int val)
{
long long ans=0,t=1,i,now=0;
XX[pos]=(long long) val;
root->cha(pos,val);
for(i=N-1;i>=0;i--)
{
if(YY[i]>now)
{
now=YY[i];
t=YY[i];
}
ans=t*root->Find(0,i+1)%MOD;
if(now<1000000000) now*=XX[i];
else break;
t*=XX[i];
t%=MOD;
}
return (int) ans;
}
int updateY(int pos, int val)
{
long long ans=0,t=1,i,now=0;
YY[pos]=(long long) val;
for(i=N-1;i>=0;i--)
{
if(YY[i]>now)
{
now=YY[i];
t=YY[i];
}
ans=t*root->Find(0,i+1)%MOD;
if(now<1000000000) now*=XX[i];
else break;
t*=XX[i];
t%=MOD;
}
return (int) ans;
}
Compilation message (stderr)
horses.cpp: In function 'int init(int, int*, int*)':
horses.cpp:51:14: warning: declaration of 'N' shadows a global declaration [-Wshadow]
51 | int init(int N, int X[], int Y[])
| ~~~~^
horses.cpp:10:11: note: shadowed declaration is here
10 | long long N;
| ^
# | 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... |