QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#416869 | #8712. Flooding Wall | zhoukangyang# | Compile Error | / | / | C++14 | 6.0kb | 2024-05-22 10:16:57 | 2024-05-22 10:16:58 |
Judging History
This is the latest submission verdict.
- [2024-05-22 10:16:58]
- Judged
- Verdict: Compile Error
- Time: 0ms
- Memory: 0kb
- [2024-05-22 10:16:57]
- Submitted
answer
#include<bits/stdc++.h>
#define L(i, j, k) for(int i = (j); i <= (k); ++i)
#define R(i, j, k) for(int i = (j); i >= (k); --i)
#define ll long long
#define sz(a) ((int) (a).size())
#define vi vector < int >
#define me(a, x) memset(a, x, sizeof(a))
#define ull unsigned long long
#define ld __float128
#define pb emplace_back
using namespace std;
const int N = 1 << 21, mod = 1e9 + 7;
int n;
int a[N], b[N];
int arr[N], tot;
int sum1[N], sum2[N], tag[N];
void adt(int x, int w) {
sum1[x] = (ll)sum1[x] * w % mod;
sum2[x] = (ll)sum2[x] * w % mod;
tag[x] = (ll)tag[x] * w % mod;
}
void push(int x) {
if(tag[x] != 1) adt(x * 2, tag[x]), adt(x * 2 + 1, tag[x]), tag[x] = 1;
}
void upd(int x) {
sum1[x] = (sum1[x * 2] + sum1[x * 2 + 1]) % mod;
sum2[x] = (sum2[x * 2] + sum2[x * 2 + 1]) % mod;
}
inline void add(int x, int L, int R, int l, int r, int w) {
if(l <= L && R <= r) return adt(x, w), void();
int mid = (L + R) >> 1;
push(x);
if(l <= mid) add(x * 2, L, mid, l, r, w);
if(r > mid) add(x * 2 + 1, mid + 1, R, l, r, w);
upd(x);
}
inline int query(int x, int L, int R, int l, int r) {
if(l <= L && R <= r) return sum1[x];
push(x);
int mid = (L + R) >> 1, ret = 0;
if(l <= mid) ret += query(x * 2, L, mid, l, r);
if(r > mid) ret += query(x * 2 + 1, mid + 1, R, l, r);
return ret % mod;
}
void inc(int x, int L, int R, int p, int w) {
if(L == R) return (sum1[x] += w) %= mod, (sum2[x] += (ll)w * arr[p] % mod) %= mod, void();
push(x); int mid = (L + R) >> 1; p <= mid ? inc(x * 2, L, mid, p, w) : inc(x * 2 + 1, mid + 1, R, p, w); upd(x);
}
void build(int x, int L, int R) {
tag[x] = 1;
if(L == R) return sum1[x] = sum2[x] = (L == 1), void();
int mid = (L + R) >> 1;
build(x * 2, L, mid), build(x * 2 + 1, mid + 1, R), upd(x);
}
int pw[N];#include<bits/stdc++.h>
#define L(i, j, k) for(int i = (j); i <= (k); ++i)
#define R(i, j, k) for(int i = (j); i >= (k); --i)
#define ll long long
#define sz(a) ((int) (a).size())
#define vi vector < int >
#define me(a, x) memset(a, x, sizeof(a))
#define ull unsigned long long
#define ld __float128
#define pb emplace_back
using namespace std;
const int N = 1 << 21, mod = 1e9 + 7;
int n;
int a[N], b[N];
int arr[N], tot;
int sum1[N], sum2[N], tag[N];
void adt(int x, int w) {
sum1[x] = (ll)sum1[x] * w % mod;
sum2[x] = (ll)sum2[x] * w % mod;
tag[x] = (ll)tag[x] * w % mod;
}
void push(int x) {
if(tag[x] != 1) adt(x * 2, tag[x]), adt(x * 2 + 1, tag[x]), tag[x] = 1;
}
void upd(int x) {
sum1[x] = (sum1[x * 2] + sum1[x * 2 + 1]) % mod;
sum2[x] = (sum2[x * 2] + sum2[x * 2 + 1]) % mod;
}
inline void add(int x, int L, int R, int l, int r, int w) {
if(l <= L && R <= r) return adt(x, w), void();
int mid = (L + R) >> 1;
push(x);
if(l <= mid) add(x * 2, L, mid, l, r, w);
if(r > mid) add(x * 2 + 1, mid + 1, R, l, r, w);
upd(x);
}
inline int query(int x, int L, int R, int l, int r) {
if(l <= L && R <= r) return sum1[x];
push(x);
int mid = (L + R) >> 1, ret = 0;
if(l <= mid) ret += query(x * 2, L, mid, l, r);
if(r > mid) ret += query(x * 2 + 1, mid + 1, R, l, r);
return ret % mod;
}
void inc(int x, int L, int R, int p, int w) {
if(L == R) return (sum1[x] += w) %= mod, (sum2[x] += (ll)w * arr[p] % mod) %= mod, void();
push(x); int mid = (L + R) >> 1; p <= mid ? inc(x * 2, L, mid, p, w) : inc(x * 2 + 1, mid + 1, R, p, w); upd(x);
}
void build(int x, int L, int R) {
tag[x] = 1;
if(L == R) return sum1[x] = sum2[x] = (L == 1), void();
int mid = (L + R) >> 1;
build(x * 2, L, mid), build(x * 2 + 1, mid + 1, R), upd(x);
}
int pw[N];
int main() {
ios :: sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> n;
L(i, 1, n) {
cin >> a[i];
}
L(i, 1, n) {
cin >> b[i];
}
L(i, 1, n) {
arr[++tot] = a[i];
arr[++tot] = b[i];
}
sort(arr + 1, arr + tot + 1);
tot = unique(arr + 1, arr + tot + 1) - arr - 1;
L(i, 1, n) {
a[i] = lower_bound(arr + 1, arr + tot + 1, a[i]) - arr;
b[i] = lower_bound(arr + 1, arr + tot + 1, b[i]) - arr;
}
pw[0] = 1;
L(i, 1, n) {
pw[i] = (ll)pw[i - 1] * 2 % mod;
}
int ans = 0;
L(tst, 0, 1) {
build(1, 1, tot);
L(i, 1, n) {
if(a[i] > b[i])swap(a[i], b[i]);
int d = query(1, 1, tot, 1, a[i]);
add(1, 1, tot, 1, a[i], 0);
inc(1, 1, tot, a[i], d);
int s = query(1, 1, tot, 1, b[i]);
inc(1, 1, tot, b[i], s);
if(b[i] < tot) add(1, 1, tot, b[i] + 1, tot, 2);
(ans += (ll) sum2[1] * pw[n - i] % mod) %= mod;
}
if(tst == 1) {
(ans += mod - (ll) n * sum2[1] % mod) %= mod;
}
reverse(a + 1, a + n + 1);
reverse(b + 1, b + n + 1);
}
L(i, 1, n) {
(ans += mod - (ll) (arr[a[i]] + arr[b[i]]) * pw[n - 1] % mod) %= mod;
}
cout << ans << '\n';
return 0;
}
int main() {
ios :: sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> n;
L(i, 1, n) {
cin >> a[i];
}
L(i, 1, n) {
cin >> b[i];
}
L(i, 1, n) {
arr[++tot] = a[i];
arr[++tot] = b[i];
}
sort(arr + 1, arr + tot + 1);
tot = unique(arr + 1, arr + tot + 1) - arr - 1;
L(i, 1, n) {
a[i] = lower_bound(arr + 1, arr + tot + 1, a[i]) - arr;
b[i] = lower_bound(arr + 1, arr + tot + 1, b[i]) - arr;
}
pw[0] = 1;
L(i, 1, n) {
pw[i] = (ll)pw[i - 1] * 2 % mod;
}
int ans = 0;
L(tst, 0, 1) {
build(1, 1, tot);
int mn = 1;
L(i, 1, n) {
if(a[i] > b[i])swap(a[i], b[i]);
if(mn < a[i]) {
int s = 0;
L(j, mn, a[i] - 1) {
int w = query(1, 1, tot, j, j);
(s += w) %= mod;
inc(1, 1, tot, j, (mod - w) % mod);
}
inc(1, 1, tot, a[i], s);
mn = a[i];
} else if(a[i] > 1) {
int r = query(1, 1, tot, 1, a[i] - 1);
assert(r == 0);
}
int s = query(1, 1, tot, 1, b[i]);
inc(1, 1, tot, b[i], s);
if(b[i] < tot) add(1, 1, tot, b[i] + 1, tot, 2);
(ans += (ll) sum2[1] * pw[n - i] % mod) %= mod;
}
if(tst == 1) {
(ans += mod - (ll) n * sum2[1] % mod) %= mod;
}
reverse(a + 1, a + n + 1);
reverse(b + 1, b + n + 1);
}
L(i, 1, n) {
(ans += mod - (ll) (arr[a[i]] + arr[b[i]]) * pw[n - 1] % mod) %= mod;
}
cout << ans << '\n';
return 0;
}
详细
answer.code:55:11: error: stray ‘#’ in program 55 | int pw[N];#include<bits/stdc++.h> | ^ answer.code:55:12: error: ‘include’ does not name a type 55 | int pw[N];#include<bits/stdc++.h> | ^~~~~~~ answer.code:66:11: error: redefinition of ‘const int N’ 66 | const int N = 1 << 21, mod = 1e9 + 7; | ^ answer.code:12:11: note: ‘const int N’ previously defined here 12 | const int N = 1 << 21, mod = 1e9 + 7; | ^ answer.code:66:24: error: redefinition of ‘const int mod’ 66 | const int N = 1 << 21, mod = 1e9 + 7; | ^~~ answer.code:12:24: note: ‘const int mod’ previously defined here 12 | const int N = 1 << 21, mod = 1e9 + 7; | ^~~ answer.code:67:5: error: redefinition of ‘int n’ 67 | int n; | ^ answer.code:13:5: note: ‘int n’ previously declared here 13 | int n; | ^ answer.code:68:5: error: redefinition of ‘int a [2097152]’ 68 | int a[N], b[N]; | ^ answer.code:14:5: note: ‘int a [2097152]’ previously declared here 14 | int a[N], b[N]; | ^ answer.code:68:11: error: redefinition of ‘int b [2097152]’ 68 | int a[N], b[N]; | ^ answer.code:14:11: note: ‘int b [2097152]’ previously declared here 14 | int a[N], b[N]; | ^ answer.code:69:5: error: redefinition of ‘int arr [2097152]’ 69 | int arr[N], tot; | ^~~ answer.code:15:5: note: ‘int arr [2097152]’ previously declared here 15 | int arr[N], tot; | ^~~ answer.code:69:13: error: redefinition of ‘int tot’ 69 | int arr[N], tot; | ^~~ answer.code:15:13: note: ‘int tot’ previously declared here 15 | int arr[N], tot; | ^~~ answer.code:70:5: error: redefinition of ‘int sum1 [2097152]’ 70 | int sum1[N], sum2[N], tag[N]; | ^~~~ answer.code:16:5: note: ‘int sum1 [2097152]’ previously declared here 16 | int sum1[N], sum2[N], tag[N]; | ^~~~ answer.code:70:14: error: redefinition of ‘int sum2 [2097152]’ 70 | int sum1[N], sum2[N], tag[N]; | ^~~~ answer.code:16:14: note: ‘int sum2 [2097152]’ previously declared here 16 | int sum1[N], sum2[N], tag[N]; | ^~~~ answer.code:70:23: error: redefinition of ‘int tag [2097152]’ 70 | int sum1[N], sum2[N], tag[N]; | ^~~ answer.code:16:23: note: ‘int tag [2097152]’ previously declared here 16 | int sum1[N], sum2[N], tag[N]; | ^~~ answer.code:71:6: error: redefinition of ‘void adt(int, int)’ 71 | void adt(int x, int w) { | ^~~ answer.code:17:6: note: ‘void adt(int, int)’ previously defined here 17 | void adt(int x, int w) { | ^~~ answer.code:76:6: error: redefinition of ‘void push(int)’ 76 | void push(int x) { | ^~~~ answer.code:22:6: note: ‘void push(int)’ previously defined here 22 | void push(int x) { | ^~~~ answer.code:79:6: error: redefinition of ‘void upd(int)’ 79 | void upd(int x) { | ^~~ answer.code:25:6: note: ‘void upd(int)’ previously defined here 25 | void upd(int x) { | ^~~ answer.code:83:13: error: redefinition of ‘void add(int, int, int, int, int, int)’ 83 | inline void add(int x, int L, int R, int l, int r, int w) { | ^~~ answer.code:29:13: note: ‘void add(int, int, int, int, int, int)’ previously defined here 29 | inline void add(int x, int L, int R, int l, int r, int w) { | ^~~ answer.code:91:12: error: redefinition of ‘int query(int, int, int, int, int)’ 91 | inline int query(int x, int L, int R, int l, int r) { | ^~~~~ answer.code:37:12: note: ‘int query(int, int, int, int, int)’ previously defined here 37 | inline int query(int x, int L, int R, int l, int r) { | ^~~~~ answer.code:99:6: error: redefinition of ‘void inc(int, int, int, int, int)’ 99 | void inc(int x, int L, int R, int p, int w) { | ^~~ answer.code:45:6: note: ‘void inc(int, int, int, int, int)’ previously defined here 45 | void inc(int x, int L, int R, int p, int w) { | ^~~ answer.code:103:6: error: redefinition of ‘void build(int, int, int)’ 103 | void build(int x, int L, int R) { | ^~~~~ answer.code:49:6: note: ‘void build(int, int, int)’ previously defined here 49 | void build(int x, int L, int R) { | ^~~~~ answer.code:109:5: error: redefinition of ‘int pw [2097152]’ 109 | int pw[N]; | ^~ answer.code:55:5: note: ‘int pw [2097152]’ previously declared here 55 | int pw[N];#include<bits/stdc++.h> | ^~ answer.code:160:5: error: redefinition of ‘int main()’ 160 | int main() { | ^~~~ answer.code:110:5: note: ‘int main()’ previously defined here 110 | int main() { | ^~~~