QOJ.ac
QOJ
The 2nd Universal Cup Finals is coming! Check out our event page, schedule, and competition rules!
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#408854 | #149. Peru | iee | Compile Error | / | / | C++14 | 1.9kb | 2024-05-11 09:40:46 | 2024-05-11 09:40:46 |
Judging History
This is a historical verdict posted at 2024-05-11 09:40:46.
- [2024-05-11 09:40:46]
- Judged
- Verdict: Compile Error
- Time: 0ms
- Memory: 0kb
- [2024-05-11 09:40:46]
- Submitted
answer
#include "peru.h"
#include <bits/stdc++.h>
using namespace std;
constexpr int N = 2.5e6 + 5, base = 23, mod = 1e9 + 7;
using ll = long long;
int n, k;
int a[N];
ll f[N];
struct info {
ll mnvf, mnans;
} tr[N << 2];
ll cov[N << 2];
void spread(int u) {
ll &k = cov[u];
if (!k) return;
tr[u * 2].mnans = tr[u * 2].mnvf + k;
tr[u * 2 + 1].mnans = tr[u * 2 + 1].mnvf + k;
cov[u * 2] = k, cov[u * 2 + 1] = k;
k = 0;
}
void pushup(int u) {
tr[u].mnvf = min(tr[u * 2].mnvf, tr[u * 2 + 1].mnvf);
tr[u].mnans = min(tr[u * 2].mnans, tr[u * 2 + 1].mnans);
}
void uf(int pos, ll vf, int u = 1, int l = 0, int r = n - 1) {
if (l == r) {
tr[u].mnvf = vf;
tr[u].mnans = vf;
return;
}
int mid = (l + r) / 2;
if (pos <= mid) uf(pos, vf, u * 2, l, mid);
else uf(pos, vf, u * 2 + 1, mid + 1, r);
pushup(u);
}
void um(int ql, int qr, ll vm, int u = 1, int l = 0, int r = n - 1) {
if (l >= ql && r <= qr) {
cov[u] = vm;
tr[u].mnans = tr[u].mnvf + vm;
return;
}
spread(u);
int mid = (l + r) / 2;
if (ql <= mid) um(ql, qr, vm, u * 2, l, mid);
if (qr > mid) um(ql, qr, vm, u * 2 + 1, mid + 1, r);
pushup(u);
}
int solve(int _n, int _k, int* _v){
n = _n, k = _k;
for (int i = 1; i <= n; i++) {
a[i] = _v[i - 1];
}
uf(0, 0);
stack<int> st;
for (int i = 1; i <= n; i++) {
while (st.size() && a[st.top()] <= a[i]) st.pop();
um(st.size() ? st.top() : 0, i - 1, a[i]);
f[i] = 1e18;
int mx = 0;
for (int j = i - 1; j >= max(0, i - k); j--) {
mx = max(mx, a[j + 1]);
f[i] = min(f[i], f[j] + mx);
}
uf(i, f[i]);
st.push(i);
}
int sum = 0;
for (int i = 1; i <= n; i++) {
sum = (1ll * sum * base % mod + f[i]) % mod;
}
return sum;
}
Details
implementer.cpp: In function ‘int main()’: implementer.cpp:34:13: error: ‘fout’ was not declared in this scope; did you mean ‘out’? 34 | fprintf(fout, "%d\n", sol); | ^~~~ | out implementer.cpp: In function ‘char nextch()’: implementer.cpp:15:31: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 15 | if (pos == BUF_SIZE) fread(buf, BUF_SIZE, 1, fin), pos = 0; | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~