QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#747264 | #9730. Elevator II | the_fool# | WA | 42ms | 3828kb | C++20 | 2.0kb | 2024-11-14 16:44:31 | 2024-11-14 16:44:31 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
using LL = long long;
constexpr int inf = 1E9 + 10;
struct T {
int l, r, id;
bool operator<(const T &p) const {
return l < p.l;
}
};
void solve() {
int n, f;
cin >> n >> f;
vector<T> a(n + 1);
int lm = inf, rm = -1;
LL w = 0;
for (int i = 1; i <= n; i++) {
auto &[l, r, id] = a[i];
cin >> l >> r;
if (r > rm) {
lm = l;
rm = r;
} else if (r == rm) {
lm = min(lm, l);
}
id = i;
w += r - l;
}
vector<int> is(n + 1);
vector<int> ans;
sort(a.begin() + 1, a.end());
int l = 1, now = 1;
while (now <= n and a[now].l <= f) ++now;
// cerr << lm << " " << rm << "\n";
while (f < lm) {
// cerr << f << " \n";
int g = -1, id = -1;
while (l <= n and a[l].l <= f) {
if (a[l].r > g) {
g = a[l].r;
id = a[l].id;
}
++l;
}
if (g <= f) {
is[a[now].id] = 1;
ans.emplace_back(a[now].id);
w += a[now].l - f;
f = a[now].l;
++now;
} else {
f = g;
ans.emplace_back(id);
is[id] = 1;
}
}
sort(a.begin() + 1, a.end(), [&](T &x, T &y) {
if (x.r == y.r) {
return x.l < y.l;
} else {
return x.r > y.r;
}
});
for (int i = 1; i <= n; i++) {
if (!is[a[i].id]) {
ans.emplace_back(a[i].id);
}
}
cout << w << "\n";
for (int x : ans) {
cout << x << " \n"[x == ans.back()];
}
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t = 1;
cin >> t;
while (t--) {
solve();
}
}
/*
2
4 2
3 6
1 3
2 7
5 6
2 5
2 4
6 8
*/
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3636kb
input:
2 4 2 3 6 1 3 2 7 5 6 2 5 2 4 6 8
output:
11 3 1 4 2 5 2 1
result:
ok ok 2 cases (2 test cases)
Test #2:
score: -100
Wrong Answer
time: 42ms
memory: 3828kb
input:
6100 19 52 51 98 2 83 40 58 96 99 39 55 72 94 15 17 4 15 48 99 2 99 77 78 35 77 44 62 79 81 30 31 1 48 48 76 68 99 60 66 6 19 44 53 64 92 17 28 67 98 9 99 40 65 16 27 99 100 15 56 4 6 24 97 84 96 47 49 37 38 77 79 13 40 13 92 71 100 47 93 90 91 72 81 15 48 32 71 19 17 95 99 10 23 18 100 90 93 52 92 ...
output:
524 10 9 18 4 1 6 2 14 11 12 17 19 13 3 5 16 15 7 8 194 5 4 2 6 1 3 397 4 11 1 5 12 10 13 14 8 16 2 6 15 9 7 3 733 7 3 10 1 6 8 4 5 17 16 13 11 15 12 18 14 9 19 2 244 3 2 8 6 5 12 4 14 10 11 9 1 15 13 7 422 18 1 6 11 2 10 7 13 9 12 4 20 14 5 15 19 8 16 3 17 104 4 1 3 2 187 4 8 3 1 2 6 7 5 9 10 117 2...
result:
wrong answer Participant print 4 more than once (test case 9)