| 比赛 |
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;
}