QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#124308 | #2788. Horses | valerikk# | 17 | 303ms | 64416kb | C++17 | 2.2kb | 2023-07-14 16:45:24 | 2024-07-04 00:39:55 |
Judging History
answer
#include "horses.h"
#include <bits/stdc++.h>
using namespace std;
namespace {
typedef long long ll;
const int N = 5e5 + 7;
const ll md = 1e9 + 7;
const ll INF = 1e18;
ll mul(ll a, ll b) {
return a <= INF / b ? a * b : INF;
}
int n;
int x[N], y[N];
struct node {
ll pref, suf, prod, prodmd, ans;
bool neut;
};
node merge(const node &l, const node &r) {
if (l.neut) {
return r;
}
if (r.neut) {
return l;
}
node ret;
ret.prod = mul(l.prod, r.prod);
ret.prodmd = l.prodmd * r.prodmd % md;
ret.pref = max(l.pref, mul(r.pref, l.prod));
ret.suf = max(r.suf, mul(l.suf, r.prod));
ret.ans = max({l.ans, r.ans, mul(l.suf, r.pref)});
ret.neut = 0;
return ret;
}
node t[4 * N];
void build(int v, int tl, int tr) {
if (tr - tl == 1) {
t[v].pref = mul(x[tl], y[tl]);
t[v].suf = x[tl];
t[v].prod = x[tl];
t[v].prodmd = x[tl];
t[v].ans = mul(x[tl], y[tl]);
t[v].neut = 0;
return;
}
int tm = (tl + tr) / 2;
build(2 * v, tl, tm);
build(2 * v + 1, tm, tr);
t[v] = merge(t[2 * v], t[2 * v + 1]);
}
void upd(int v, int tl, int tr, int pos) {
if (tr - tl == 1) {
t[v].pref = mul(x[tl], y[tl]);
t[v].suf = x[tl];
t[v].prod = x[tl];
t[v].prodmd = x[tl];
t[v].ans = mul(x[tl], y[tl]);
return;
}
int tm = (tl + tr) / 2;
if (pos < tm) {
upd(2 * v, tl, tm, pos);
} else {
upd(2 * v + 1, tm, tr, pos);
}
t[v] = merge(t[2 * v], t[2 * v + 1]);
}
node get(int v, int tl, int tr, int l, int r) {
if (tl >= r || tr <= l) {
return {1, 1, 1, 1, 1, 1};
}
if (tl >= l && tr <= r) {
return t[v];
}
int tm = (tl + tr) / 2;
return merge(get(2 * v, tl, tm, l, r), get(2 * v + 1, tm, tr, l, r));
}
ll getans() {
int l = -1, r = n;
while (r - l > 1) {
int mid = (l + r) / 2;
if (get(1, 0, n, mid, n).prod > 1e9) {
l = mid;
} else {
r = mid;
}
}
return get(1, 0, n, r, n).ans % md * get(1, 0, n, 0, r).prodmd % md;
}
}
int init(int grdn, int grdx[], int grdy[]) {
n = grdn;
for (int i = 0; i < n; ++i) {
x[i] = grdx[i];
y[i] = grdy[i];
}
build(1, 0, n);
return getans();
}
int updateX(int pos, int val) {
x[pos] = val;
upd(1, 0, n, pos);
return getans();
}
int updateY(int pos, int val) {
y[pos] = val;
upd(1, 0, n, pos);
return getans();
}
详细
Subtask #1:
score: 17
Accepted
Test #1:
score: 17
Accepted
time: 0ms
memory: 7980kb
input:
1 2 3 0
output:
6
result:
ok single line: '6'
Test #2:
score: 0
Accepted
time: 1ms
memory: 7852kb
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: 0
Accepted
time: 1ms
memory: 7904kb
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: 0
Accepted
time: 1ms
memory: 7896kb
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: 0
Accepted
time: 1ms
memory: 7904kb
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: 0
Accepted
time: 1ms
memory: 7908kb
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: 0
Accepted
time: 0ms
memory: 7924kb
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: 0
Accepted
time: 1ms
memory: 8048kb
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: 0
Accepted
time: 1ms
memory: 5804kb
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: 0
Accepted
time: 0ms
memory: 7900kb
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: 0
Accepted
time: 1ms
memory: 7920kb
input:
2 2 5 9 7 0
output:
70
result:
ok single line: '70'
Test #12:
score: 0
Accepted
time: 1ms
memory: 7912kb
input:
1 1 1 0
output:
1
result:
ok single line: '1'
Test #13:
score: 0
Accepted
time: 1ms
memory: 7904kb
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: 0
Accepted
time: 1ms
memory: 7872kb
input:
1 10 10 0
output:
100
result:
ok single line: '100'
Test #15:
score: 0
Accepted
time: 1ms
memory: 7852kb
input:
2 1 4 7 2 0
output:
8
result:
ok single line: '8'
Test #16:
score: 0
Accepted
time: 1ms
memory: 7852kb
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: 0
Accepted
time: 1ms
memory: 7900kb
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: 0
Accepted
time: 1ms
memory: 7988kb
input:
4 1 2 4 8 8 4 2 1 0
output:
64
result:
ok single line: '64'
Test #19:
score: 0
Accepted
time: 1ms
memory: 7840kb
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: 0
Accepted
time: 1ms
memory: 7904kb
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: 0
Wrong Answer
Dependency #1:
100%
Accepted
Test #21:
score: 17
Accepted
time: 1ms
memory: 7908kb
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: 0
Accepted
time: 0ms
memory: 7908kb
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
Wrong Answer
time: 2ms
memory: 8028kb
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 609230544 165967503 244287754 244287754 270995710 270995710 270995710 247981131 247981131 237849527 24662481 24662481 451435926 989677577 989677577 704081481 704081481 704081481 704081481 704081481 631761803 631761803 631761803 80...
result:
wrong answer 8th lines differ - expected: '868802752', found: '609230544'
Subtask #3:
score: 0
Wrong Answer
Test #33:
score: 0
Wrong Answer
time: 303ms
memory: 64416kb
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 967631222 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:
wrong answer 3rd lines differ - expected: '795463654', found: '967631222'
Subtask #4:
score: 0
Skipped
Dependency #2:
0%
Subtask #5:
score: 0
Skipped
Dependency #1:
100%
Accepted
Dependency #2:
0%