比赛 USACO2026 JAN G&P2 评测结果 AWWTTTTTTTTTTTTTTTTTT
题目名称 Lineup Counting Queries 最终得分 4
用户昵称 LikableP 运行时间 28.815 s
代码语言 C++ 内存使用 4.08 MiB
提交时间 2026-01-24 10:40:50
显示代码纯文本
#include <cstdio>
#include <algorithm>

const int MAXQ = 1e5 + 10;

struct Ques {
  int l1, r1, l2, r2, t, id, ans;

  void read() {
    scanf("%d %d %d %d %d", &l1, &r1, &l2, &r2, &t);
  }
} ques[MAXQ];

int Q;
int queue[MAXQ];

int main() {
  #ifdef LOCAL
    freopen("!input.in", "r", stdin);
    freopen("!output.out", "w", stdout);
  #else
    freopen("Queries.in", "r", stdin);
    freopen("Queries.out", "w", stdout);
  #endif

  scanf("%d", &Q);
  for (int i = 1; i <= Q; ++i) {
    ques[i].read();
    ques[i].id = i;
  }

  std::sort(ques + 1, ques + Q + 1, [](Ques x, Ques y) {
    return x.t < y.t;
  });

  int nowt = 0, qtop = 1;
  for (int i = 1; i <= ques[Q].t; ++i) {
    int transfer = queue[0];
    for (int j = 1; j <= i / 2; ++j) {
      queue[j - 1] = queue[j];
    }
    queue[i / 2] = transfer;
    queue[i] = i;

    while (i == ques[qtop].t) {
      auto& [l1, r1, l2, r2, t, id, ans] = ques[qtop];
      for (int j = l2; j <= r2; ++j) {
        for (int k = l1; k <= r1; ++k) {
          if (queue[j] == k) ans++;
        }
      }
      qtop++;
    }
  }

  std::sort(ques + 1, ques + Q + 1, [](Ques x, Ques y) {
    return x.id < y.id;
  });

  for (int i = 1; i <= Q; ++i) {
    printf("%d\n", ques[i].ans);
  }
  return 0;
}