QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#664598 | #2788. Horses | Pioneer | 34 | 11ms | 11980kb | C++20 | 2.9kb | 2024-10-21 21:22:44 | 2024-10-21 21:22:45 |
Judging History
answer
#include "horses.h"
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const ll inf=1e9;
const int mod=1e9+7;
const int MAX=5e5+10;
struct segtree{
pair<int,bool> t[4*MAX];
pair<int,bool> mrg(pair<int,bool> a,pair<int,bool> b){
pair<int,bool> res={a.first*1ll*b.first%mod,(a.second|b.second)};
if(a.first*1ll*b.first>=mod){
res.second=1;
}
return res;
}
void update(int v,int tl,int tr,int pos,int x){
if(tl==tr){
t[v]={x,0};
return;
}
int tm=(tl+tr)/2;
if(pos<=tm)update(2*v,tl,tm,pos,x);
else update(2*v+1,tm+1,tr,pos,x);
t[v]=mrg(t[2*v],t[2*v+1]);
}
pair<int,bool> get(int v,int tl,int tr,int l,int r){
if(l>r||tl>r||l>tr)return {1,0};
if(l<=tl&&tr<=r)return t[v];
int tm=(tl+tr)/2;
return mrg(get(2*v,tl,tm,l,r),get(2*v+1,tm+1,tr,l,r));
}
}tx;
struct segtreeMx{
pair<int,int> t[MAX];
pair<int,int> mrg(pair<int,int> a,pair<int,int> b){
if(a.first>=b.first)return a;
else return b;
}
void update(int v,int tl,int tr,int pos,int x){
if(tl==tr){
t[v]={x,tl};
return;
}
int tm=(tl+tr)/2;
if(pos<=tm)update(2*v,tl,tm,pos,x);
else update(2*v+1,tm+1,tr,pos,x);
t[v]=mrg(t[2*v],t[2*v+1]);
}
pair<int,int> get(int v,int tl,int tr,int l,int r){
if(l>r||tl>r||l>tr)return {0,0};
if(l<=tl&&tr<=r)return t[v];
int tm=(tl+tr)/2;
return mrg(get(2*v,tl,tm,l,r),get(2*v+1,tm+1,tr,l,r));
}
}ty;
int n;
set<int> st;
int x[MAX];
int y[MAX];
int get(int pos){
int ans=1;
for(int i=1;i<=pos;i++)ans=ans*1ll*x[i]%mod;
return ans*1ll*y[pos]%mod;
return tx.get(1,1,n,1,pos).first*1ll*y[pos]%mod;
}
int get(){
{
int pos=n;
int per=x[n]*1ll*y[n]%mod;
bool bf=0;
if(x[n]*1ll*y[n]>=mod)bf=1;
for(int i=n-1;i>=max(1,n-1000);i--){
if(!bf&&y[i]>=per){
pos=i;
per=y[i];
bf=0;
}
if(per*1ll*x[i]>=mod){
bf=1;
}
per=per*1ll*x[i]%mod;
}
return get(pos);
}
st.insert(1);
vector<int> vec;
int pos=ty.get(1,1,n,*st.rbegin(),n).second;
vec.push_back(*st.rbegin());
st.erase(--st.end());
while(!st.empty()){
int pos1=ty.get(1,1,n,*st.rbegin(),vec.back()-1).second;
vec.push_back(*st.rbegin());
st.erase(--st.end());
pair<int,bool> bf=tx.get(1,1,n,pos1+1,pos);
if(bf.second||bf.first*1ll*y[pos]>=mod)break;
if(bf.first*y[pos]<=y[pos1])pos=pos1;
}
for(int x:vec)st.insert(x);
return get(pos);
}
int init(int N, int X[], int Y[]) {
n=N;
for(int i=0;i<N;i++){
y[i+1]=Y[i];
x[i+1]=X[i];
tx.update(1,1,N,i+1,X[i]);
ty.update(1,1,N,i+1,Y[i]);
if(X[i]!=1){
st.insert(i+1);
}
}
return get();
}
int updateX(int pos, int val) {
pos++;
if(x[pos]!=1)st.erase(pos);
x[pos]=val;
tx.update(1,1,n,pos,val);
if(x[pos]!=1)st.insert(pos);
return get();
}
int updateY(int pos, int val) {
pos++;
y[pos]=val;
ty.update(1,1,n,pos,val);
return get();
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 17
Accepted
Test #1:
score: 17
Accepted
time: 0ms
memory: 9940kb
input:
1 2 3 0
output:
6
result:
ok single line: '6'
Test #2:
score: 17
Accepted
time: 1ms
memory: 7848kb
input:
10 2 1 1 5 2 1 1 10 5 1 3 5 7 9 4 1 4 10 10 9 0
output:
10000
result:
ok single line: '10000'
Test #3:
score: 17
Accepted
time: 0ms
memory: 9952kb
input:
10 10 10 10 1 1 1 1 1 1 1 2 3 4 2 7 6 5 4 3 2 0
output:
7000
result:
ok single line: '7000'
Test #4:
score: 17
Accepted
time: 0ms
memory: 7980kb
input:
10 9 1 1 1 1 1 1 1 1 2 4 1 1 1 1 1 1 1 1 2 0
output:
36
result:
ok single line: '36'
Test #5:
score: 17
Accepted
time: 1ms
memory: 10092kb
input:
10 1 1 1 1 1 1 1 1 1 1 1 2 3 4 5 6 7 8 9 10 0
output:
10
result:
ok single line: '10'
Test #6:
score: 17
Accepted
time: 1ms
memory: 7860kb
input:
10 1 1 1 1 1 1 1 1 1 1 10 9 8 7 6 5 4 3 2 1 0
output:
10
result:
ok single line: '10'
Test #7:
score: 17
Accepted
time: 1ms
memory: 7852kb
input:
10 10 10 10 1 1 1 1 1 1 1 10 10 2 3 4 5 6 7 8 9 0
output:
9000
result:
ok single line: '9000'
Test #8:
score: 17
Accepted
time: 1ms
memory: 9892kb
input:
10 10 10 10 1 1 1 1 1 1 1 10 10 9 8 7 6 5 4 3 2 0
output:
9000
result:
ok single line: '9000'
Test #9:
score: 17
Accepted
time: 1ms
memory: 10032kb
input:
10 1 1 1 1 2 2 1 1 1 1 8 8 8 8 1 1 2 2 2 2 0
output:
8
result:
ok single line: '8'
Test #10:
score: 17
Accepted
time: 1ms
memory: 10024kb
input:
10 1 1 1 1 1 1 1 1 1 1 1 2 3 4 5 9 8 7 6 1 0
output:
9
result:
ok single line: '9'
Test #11:
score: 17
Accepted
time: 1ms
memory: 10056kb
input:
2 2 5 9 7 0
output:
70
result:
ok single line: '70'
Test #12:
score: 17
Accepted
time: 0ms
memory: 10028kb
input:
1 1 1 0
output:
1
result:
ok single line: '1'
Test #13:
score: 17
Accepted
time: 1ms
memory: 9892kb
input:
7 7 1 1 6 2 3 2 7 6 5 4 3 7 1 0
output:
1764
result:
ok single line: '1764'
Test #14:
score: 17
Accepted
time: 1ms
memory: 7912kb
input:
1 10 10 0
output:
100
result:
ok single line: '100'
Test #15:
score: 17
Accepted
time: 1ms
memory: 9956kb
input:
2 1 4 7 2 0
output:
8
result:
ok single line: '8'
Test #16:
score: 17
Accepted
time: 1ms
memory: 9960kb
input:
10 1 10 1 10 1 1 10 1 1 1 7 3 10 10 4 10 1 4 5 10 0
output:
10000
result:
ok single line: '10000'
Test #17:
score: 17
Accepted
time: 0ms
memory: 9888kb
input:
6 1 1 1 1 1 1 1 1 1 1 1 1 0
output:
1
result:
ok single line: '1'
Test #18:
score: 17
Accepted
time: 1ms
memory: 9956kb
input:
4 1 2 4 8 8 4 2 1 0
output:
64
result:
ok single line: '64'
Test #19:
score: 17
Accepted
time: 0ms
memory: 9956kb
input:
6 1 2 2 3 1 1 7 1 1 2 1 1 0
output:
24
result:
ok single line: '24'
Test #20:
score: 17
Accepted
time: 0ms
memory: 9896kb
input:
10 2 1 1 5 2 1 1 10 5 1 3 5 7 9 4 1 4 10 7 9 0
output:
9000
result:
ok single line: '9000'
Subtask #2:
score: 17
Accepted
Dependency #1:
100%
Accepted
Test #21:
score: 17
Accepted
time: 1ms
memory: 9956kb
input:
10 10 10 10 10 10 10 1 1 1 1 1 1 1 1 9 5 4 7 3 2 5 1 5 1 2 5 123456789 1 5 1 1 8 987654321 1 9 777777777
output:
7000000 900000 678813585 678813585 294225928 75803567
result:
ok 6 lines
Test #22:
score: 17
Accepted
time: 0ms
memory: 10088kb
input:
10 3 2 7 5 11 13 107 23 51 3 1 1 1 1 1000000000 1 1 1 1 1 16 1 1 1 1 2 1 1 0 1 1 8 1 1 7 1 1 9 1 1 1 25 1 8 123456789 1 4 1 1 6 1 1 3 1 1 5 1 1 5 12345 1 6 123456 1 7 1234567 2 4 3
output:
999983837 999991922 999998852 999999622 999999622 999999622 999999622 999990382 539408243 49037113 617280725 123456145 999999832 851238418 489396978 354709175 354709175
result:
ok 17 lines
Test #23:
score: 17
Accepted
time: 10ms
memory: 10052kb
input:
1000 179278145 423054674 671968267 409599985 828900464 393298292 569389961 360810107 205374067 618910650 76768983 62623743 225944805 498579132 917750714 600860488 642568763 21949846 852642376 283772010 299085842 669257630 544180666 249770466 320727298 612199337 15873453 726595389 219129403 876893450...
output:
394559852 394559852 394559852 394559852 868802752 868802752 868802752 868802752 165967503 244287754 244287754 270995710 270995710 270995710 247981131 247981131 237849527 24662481 24662481 451435926 989677577 989677577 704081481 704081481 704081481 704081481 704081481 631761803 631761803 631761803 80...
result:
ok 1001 lines
Test #24:
score: 17
Accepted
time: 10ms
memory: 9928kb
input:
1000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...
output:
858314903 362189740 362189740 362189740 362189740 362189740 347762296 347762296 347762296 347762296 347762296 347762296 297139175 297139175 56337247 56337247 56337247 919555391 919555391 223551221 223551221 223551221 674943421 674943421 674943421 674943421 674943421 160231649 160231649 242692758 242...
result:
ok 1001 lines
Test #25:
score: 17
Accepted
time: 7ms
memory: 10004kb
input:
1000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 100000000...
output:
426490853 426490853 426490853 426490853 224787023 224787023 110744712 110744712 110744712 682644373 841322190 841322190 594096835 973115198 7681374 712091041 712091041 712091041 712091041 712091041 712091041 712091041 326844140 326844140 163422070 326844140 326844140 326844140 163422070 163422070 16...
result:
ok 1001 lines
Test #26:
score: 17
Accepted
time: 10ms
memory: 9992kb
input:
1000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 100000000...
output:
426490853 224787023 110744712 110744712 110744712 110744712 110744712 110744712 110744712 110744712 841322190 188193663 188193663 973115198 973115198 486557599 486557599 486557599 501920347 501920347 214011381 214011381 214011381 214011381 214011381 214011381 214011381 214011381 540855521 81711035 8...
result:
ok 1001 lines
Test #27:
score: 17
Accepted
time: 10ms
memory: 10072kb
input:
1000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...
output:
1 111838200 111838200 141345155 141345155 141345155 347215940 347215940 462493672 462493672 462493672 475246965 475246965 475246965 475246965 475246965 475246965 475246965 475246965 475246965 475246965 475246965 475246965 475246965 475246965 475246965 475246965 475246965 475246965 475246965 47524696...
result:
ok 1001 lines
Test #28:
score: 17
Accepted
time: 11ms
memory: 11980kb
input:
999 1 2 1 6 1 7 1 8 1 2 1 9 1 4 1 2 1 6 1 6 1 10 1 3 1 7 1 2 1 8 1 5 1 5 1 2 1 9 1 6 1 9 1 9 1 4 1 8 1 10 1 4 1 2 1 7 1 4 1 9 1 3 1 10 1 6 1 3 1 10 1 9 1 4 1 2 1 10 1 2 1 4 1 10 1 3 1 7 1 9 1 2 1 4 1 5 1 6 1 2 1 10 1 8 1 2 1 5 1 6 1 6 1 8 1 3 1 10 1 9 1 3 1 3 1 4 1 6 1 5 1 6 1 5 1 6 1 4 1 2 1 8 1 2 ...
output:
894825221 894825221 894825221 894825221 894825221 894825221 894825221 894825221 894825221 894825221 894825221 894825221 894825221 894825221 894825221 894825221 894825221 894825221 894825221 894825221 894825221 894825221 894825221 894825221 894825221 894825221 894825221 894825221 894825221 894825221 ...
result:
ok 1001 lines
Test #29:
score: 17
Accepted
time: 9ms
memory: 9964kb
input:
1000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...
output:
1 2 2 4 8 16 16 32 32 16 8 4 2 2 2 2 4 4 4 8 8 8 8 4 2 4 4 8 16 32 32 16 16 8 4 2 2 2 2 2 2 4 2 2 2 2 2 2 4 4 4 2 4 4 8 16 32 32 16 8 4 4 2 2 4 4 2 2 4 4 4 8 16 16 8 16 16 16 8 16 8 4 2 2 2 4 8 16 32 32 16 16 16 8 4 8 8 4 4 4 2 1 1 1 1 1 2 2 4 4 8 8 8 8 16 16 16 32 16 8 8 4 2 4 4 2 2 4 2 4 4 8 8 8 4...
result:
ok 1001 lines
Test #30:
score: 17
Accepted
time: 9ms
memory: 7968kb
input:
1000 449878747 910674510 165143519 796141357 640922692 573949623 473255861 694971928 923936963 520980628 407779878 356558322 959023188 533793940 402247935 460440718 261337138 763084309 477743089 457285505 21664165 849032387 495576190 421984304 467773902 838138184 169975811 805107419 502174869 375370...
output:
392927667 3019699 252703129 967234835 690465334 745063314 648310471 594657147 797483498 960494972 217493779 741093774 398194406 336083786 400370081 595436661 30471347 875039519 60963593 516858978 480652068 726643394 673856666 237413719 45909014 783589282 600072636 214213285 409343465 506112870 19369...
result:
ok 1001 lines
Test #31:
score: 17
Accepted
time: 8ms
memory: 9948kb
input:
1000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...
output:
1048576 1048576 1048576 1048576 1048576 1048576 1048576 1048576 1048576 1048576 1048576 1048576 1048576 1048576 1048576 1048576 1048576 1048576 1048576 1048576 1048576 1048576 2097152 4194304 8388608 16777216 33554432 67108864 134217728 268435456 536870912 536870912 536870912 536870912 536870912 536...
result:
ok 1001 lines
Test #32:
score: 17
Accepted
time: 8ms
memory: 9964kb
input:
1000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...
output:
73741817 999999993 1000000000 1000000000 73741817 999999993 1000000000 1000000000 73741817 999999993 1000000000 1000000000 73741817 999999993 1000000000 1000000000 73741817 999999993 1000000000 1000000000 73741817 999999993 1000000000 1000000000 73741817 999999993 1000000000 1000000000 73741817 9999...
result:
ok 1001 lines
Subtask #3:
score: 0
Time Limit Exceeded
Test #33:
score: 0
Time Limit Exceeded
input:
500000 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2...
output:
967631222 967631222 795463654 885679347 618832158 618832158 618832158 618832158 618832158 582471866 864166718 864166718 864166718 864166718 864166718 813424701 813424701 813424701 813424701 813424701 815547130 815547130 815547130 815547130 815547130 715585103 715585103 715585103 715585103 715585103 ...
result:
Subtask #4:
score: 0
Time Limit Exceeded
Dependency #2:
100%
Accepted
Test #37:
score: 0
Time Limit Exceeded
input:
500000 179278145 423054674 671968267 409599985 828900464 393298292 569389961 360810107 205374067 618910650 76768983 62623743 225944805 498579132 917750714 600860488 642568763 21949846 852642376 283772010 299085842 669257630 544180666 249770466 320727298 612199337 15873453 726595389 219129403 8768934...
output:
419054251 419054251 419054251 419054251 419054251 419054251 419054251 419054251 419054251 179710923 179710923 286534476 96643904 741760657 313380467 342283411 273971428 983651544 248973498 248973498 109729116 535596707 914708832 914708832 914708832 914708832 914708832 936044725 27945563 27945563 279...
result:
Subtask #5:
score: 0
Skipped
Dependency #1:
100%
Accepted
Dependency #2:
100%
Accepted
Dependency #3:
0%