QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#747802 | #9730. Elevator II | Pinkychow | WA | 36ms | 5900kb | C++17 | 2.4kb | 2024-11-14 18:19:23 | 2024-11-14 18:19:24 |
Judging History
answer
#include<bits/stdc++.h>
#define endl '\n'
using i64 = long long;
using namespace std;
struct node{
i64 l, r;
int id;
bool operator<(const node x) const{
return l < x.l;
}
} s[100010];
struct node1{
i64 l, r;
int id;
bool operator<(const node1 x) const{
return r > x.r;
}
} t[100010];
signed main(){
std::ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int T, n;
i64 f;
cin >> T;
while(T--){
cin >> n >> f;
i64 mx = 0, idx = 0;
for (int i = 1; i <= n;i++){
cin >> s[i].l >> s[i].r, s[i].id = i;
mx = max(mx, s[i].r);
}
sort(s + 1, s + n + 1);
i64 sum = 0;
vector<int> ord;
vector<bool> vis(n + 1);
int cur = f;
for (int i = 1; i <= n;i++){
if(s[i].l<=cur&&s[i].r>cur){
idx = i;
break;
}
}
if(!idx){
for (int i = 1; i <= n; i++)
if (s[i].l > cur){
sum += s[i].l - cur;
idx = i;
break;
}
}
if(!idx){ //r_max <= f
for (int i = 1; i <= n;i++){
if(s[i].r==mx){
ord.push_back(s[i].id);
vis[i] = 1;
break;
}
}
}else{
cur = s[idx].r, vis[idx] = 1;
sum += s[idx].r - s[idx].l;
ord.push_back(s[idx].id);
for (int i = idx + 1; i <= n;i++){
if (s[i].r < cur)
continue;
sum += max(0LL, s[i].l - cur);
sum += s[i].r - s[i].l;
cur = s[i].r, vis[i] = 1;
ord.push_back(s[i].id);
if(cur==mx)
break;
}
}
int cnt = 0;
for (int i = 1; i <= n;i++){
if(!vis[i]){
sum += s[i].r - s[i].l;
t[++cnt].l = s[i].l;
t[cnt].r = s[i].r;
t[cnt].id = s[i].id;
}
}
sort(t + 1, t + cnt + 1);
for (int i = 1; i <= cnt;i++)
ord.push_back(t[i].id);
cout << sum << endl;
for(auto i:ord)
cout << i << ' ';
cout << endl;
}
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 5656kb
input:
2 4 2 3 6 1 3 2 7 5 6 2 5 2 4 6 8
output:
11 2 3 1 4 5 2 1
result:
ok ok 2 cases (2 test cases)
Test #2:
score: -100
Wrong Answer
time: 36ms
memory: 5900kb
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 2 10 9 4 18 1 6 14 11 12 17 19 13 3 5 16 15 7 8 194 5 4 2 6 1 3 397 9 10 4 11 1 5 12 13 14 8 16 2 6 15 7 3 733 2 15 7 3 10 1 6 8 4 5 17 16 13 11 12 18 14 9 19 244 3 11 10 5 6 2 8 12 4 14 9 1 15 13 7 422 17 18 1 6 11 10 2 7 13 9 12 4 20 14 5 15 8 19 16 3 104 3 4 1 2 187 4 1 3 8 2 6 7 5 9 1...
result:
wrong answer Participant declares the cost to be 88, but the plan actually costs 118 (test case 42)