#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n, q;
vector<pair<ll,ll>> block[1001][1001];
ll suff[1001][1001];
ll query(ll A, ll B, ll C)
{
ll res = 0;
for (int i = A / 1000; i <= 1000; i++)
{
// for each value i, the a-value is in the range
// i * 1000 <= x <= (i + 1) * 1000 - 1
// we want to find the first j such that
// j * 1000 >= B and (i + j) * 1000 >= C
// then add the suffix sum block[i][j] + block[i][j+1] + ... + block[i][1000].
int j = max((B + 999) / 1000, (C + 999) / 1000 - i);
res += suff[i][j];
for (int k = min(B / 1000, C / 1000 - i); k < j; k++)
for (auto [a, b] : block[i][k])
if (a + b >= C && a >= A && b >= B)
res++;
}
return res;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> n >> q;
for (int i = 0; i < n; i++)
{
ll a, b;
cin >> a >> b;
block[a / 1000][b / 1000].push_back({a, b});
}
for (int i = 0; i <= 1000; i++)
{
suff[i][1000] = block[i][1000].size();
for (int j = 999; j >= 0; j--)
suff[i][j] = suff[i][j+1] + block[i][j].size();
}
ll A, B, C;
while (q--)
{
cin >> A >> B >> C;
cout << query(A, B, C) << '\n';
}
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
27 ms |
31572 KB |
Output is correct |
2 |
Correct |
27 ms |
31728 KB |
Output is correct |
3 |
Correct |
33 ms |
31572 KB |
Output is correct |
4 |
Runtime error |
35 ms |
48136 KB |
Execution killed with signal 11 |
5 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
3074 ms |
35788 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
3074 ms |
35788 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
27 ms |
31572 KB |
Output is correct |
2 |
Correct |
27 ms |
31728 KB |
Output is correct |
3 |
Correct |
33 ms |
31572 KB |
Output is correct |
4 |
Runtime error |
35 ms |
48136 KB |
Execution killed with signal 11 |
5 |
Halted |
0 ms |
0 KB |
- |