# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
636110 |
2022-08-28T06:56:25 Z |
Spade1 |
Pairs (IOI07_pairs) |
C++14 |
|
209 ms |
27584 KB |
#include<bits/stdc++.h>
#define pii pair<int, int>
#define pll pair<long long, long long>
#define ll long long
#define ld long double
#define st first
#define nd second
#define pb push_back
#define INF INT_MAX
using namespace std;
const int N = 2e5 + 10;
const int M = 250;
int a[N], fw[N], fw2[M][M][M];
pii c[N], e[N];
pair<int, pii> f[N];
pair<pii, pii> g[N];
void update1(int i, int val) {
for (; i < N; i += i&-i) {
fw[i] += val;
}
}
int query1(int i) {
int ret = 0;
for (; i > 0; i -= i&-i) {
ret += fw[i];
}
return ret;
}
void update2(int ii, int jj, int kk, int val) {
for (int i = ii; i < M; i += i&-i) {
for (int j = jj; j < M; j += j&-j) {
for (int k = kk; k < M; k += k&-k) {
fw2[i][j][k] += val;
}
}
}
}
int query2(int ii, int jj, int kk) {
int ret = 0;
for (int i = ii; i > 0; i -= i&-i) {
for (int j = jj; j > 0; j -= j&-j) {
for (int k = kk; k > 0; k -=k&-k) {
ret += fw2[i][j][k];
}
}
}
return ret;
}
void solve() {
int b, n, d, m; cin >> b >> n >> d >> m;
ll ans = 0;
if (b == 1) {
for (int i = 0; i < n; ++i) cin >> a[i];
sort(a, a+n);
int l = 0;
for (int i = 1; i < n; ++i) {
while (a[i] - a[l] > d) l++;
ans += (i-l);
}
}
else if (b == 2) {
for (int i = 0; i < n; ++i) cin >> c[i].st >> c[i].nd;
for (int i = 0; i < n; ++i) {
e[i].st = c[i].st - c[i].nd;
e[i].nd = c[i].st + c[i].nd + 1;
}
sort(e, e+n);
int l = 0;
update1(e[0].nd, 1);
for (int i = 1; i < n; ++i) {
while (e[i].st - e[l].st > d) {
update1(e[l].nd, -1);
l++;
}
ans += (query1(e[i].nd + d) - query1(max(1, e[i].nd - d - 1)));
update1(e[i].nd, 1);
}
}
else if (b == 3) {
for (int i = 0; i < n; ++i) {
cin >> f[i].st >> f[i].nd.st >> f[i].nd.nd;
}
for (int i = 0; i < n; ++i) {
g[i].st.st = f[i].st - f[i].nd.st - f[i].nd.nd;
g[i].st.nd = f[i].st + f[i].nd.st + f[i].nd.nd+1;
g[i].nd.st = f[i].st + f[i].nd.st - f[i].nd.nd+76;
g[i].nd.nd = f[i].st - f[i].nd.st + f[i].nd.nd+76;
}
sort(g, g+n);
int l = 0;
update2(g[0].st.nd, g[0].nd.st, g[0].nd.nd, 1);
for (int i = 1; i < n; ++i) {
while (g[i].st.st - g[l].st.st > d) {
update2(g[l].st.nd, g[l].nd.st, g[l].nd.nd, -1);
l++;
}
ans += query2(g[i].st.nd + d, g[i].nd.st + d, g[i].nd.nd + d);
ans -= query2(g[i].st.nd + d, g[i].nd.st + d, g[i].nd.nd - d - 1);
ans -= query2(g[i].st.nd + d, g[i].nd.st - d - 1, g[i].nd.nd + d);
ans -= query2(g[i].st.nd - d - 1, g[i].nd.st + d, g[i].nd.nd + d);
ans += query2(g[i].st.nd + d, g[i].nd.st - d - 1, g[i].nd.nd - d - 1);
ans += query2(g[i].st.nd - d - 1, g[i].nd.st + d, g[i].nd.nd - d - 1);
ans += query2(g[i].st.nd - d - 1, g[i].nd.st - d - 1, g[i].nd.nd + d);
ans -= query2(g[i].st.nd - d - 1, g[i].nd.st - d - 1, g[i].nd.nd - d - 1);
update2(g[i].st.nd, g[i].nd.st, g[i].nd.nd, 1);
}
}
cout << ans << '\n';
}
int main() {
ios_base::sync_with_stdio(0); cin.tie(NULL);
int t = 1;
// cin >> t;
while (t--) {
solve();
}
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
0 ms |
212 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
11 ms |
660 KB |
Output is correct |
2 |
Correct |
13 ms |
656 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
17 ms |
732 KB |
Output is correct |
2 |
Correct |
15 ms |
720 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
21 ms |
680 KB |
Output is correct |
2 |
Correct |
19 ms |
720 KB |
Output is correct |
3 |
Correct |
15 ms |
700 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
852 KB |
Output is correct |
2 |
Correct |
1 ms |
852 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
23 ms |
1852 KB |
Output is correct |
2 |
Correct |
23 ms |
1904 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
29 ms |
1936 KB |
Output is correct |
2 |
Correct |
34 ms |
1876 KB |
Output is correct |
3 |
Correct |
28 ms |
1924 KB |
Output is correct |
4 |
Correct |
26 ms |
1876 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
29 ms |
2424 KB |
Output is correct |
2 |
Correct |
28 ms |
2408 KB |
Output is correct |
3 |
Correct |
28 ms |
2388 KB |
Output is correct |
4 |
Correct |
32 ms |
2332 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
10 ms |
12032 KB |
Output is correct |
2 |
Runtime error |
2 ms |
596 KB |
Execution killed with signal 11 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
85 ms |
3848 KB |
Output is correct |
2 |
Correct |
74 ms |
4492 KB |
Output is correct |
3 |
Correct |
62 ms |
4440 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
167 ms |
19500 KB |
Output is correct |
2 |
Correct |
149 ms |
20292 KB |
Output is correct |
3 |
Runtime error |
32 ms |
6860 KB |
Execution killed with signal 11 |
4 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
209 ms |
27584 KB |
Output is correct |
2 |
Runtime error |
41 ms |
14040 KB |
Execution killed with signal 11 |
3 |
Halted |
0 ms |
0 KB |
- |