比赛 EYOI暨SBOI暑假快乐赛3rd 评测结果 AATTTTWWWWTTTWWTTTWT
题目名称 Convoluted Intervals 最终得分 10
用户昵称 lihaoze 运行时间 34.603 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2022-06-27 10:46:38
显示代码纯文本
  1. #include <bits/stdc++.h>
  2.  
  3. using i64 = long long;
  4. using PII = std::pair<int, int>;
  5.  
  6. const int N = 1e4+10;
  7. int c[N], n, m;
  8. PII a[N];
  9.  
  10. int lowbit(int x) { return x & -x; }
  11.  
  12. i64 ask(int x) {
  13. i64 y = 0;
  14. for (; x; x -= lowbit(x)) y += c[x];
  15. return y;
  16. }
  17. void insert(int x, int y) {
  18. for (; x < N; x += lowbit(x)) c[x] += y;
  19. }
  20.  
  21. int main() {
  22. freopen("Convoluted_Intervals.in", "r", stdin);
  23. freopen("Convoluted_Intervals.out", "w", stdout);
  24. std::ios::sync_with_stdio(false);
  25. std::cin.tie(nullptr);
  26. std::cin >> n >> m;
  27. for (int i = 1; i <= n; ++ i) {
  28. auto& [x, y] = a[i];
  29. std::cin >> x >> y;
  30. }
  31. for (int i = 1; i <= n; ++ i) {
  32. for (int j = 1; j <= n; ++ j) {
  33. auto [x1, y1] = a[i];
  34. auto [x2, y2] = a[j];
  35. insert(x1 + x2, 1);
  36. insert(y1 + y2 + 1, -1);
  37. }
  38. }
  39. for (int i = 0; i <= 2 * m; ++ i) {
  40. std::cout << ask(i) << '\n';
  41. }
  42. return 0;
  43. }