QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#865128#9730. Elevator IIafyWA 56ms3712kbC++202.0kb2025-01-21 15:12:272025-01-21 15:12:27

Judging History

你现在查看的是最新测评结果

  • [2025-01-21 15:12:27]
  • 评测
  • 测评结果:WA
  • 用时:56ms
  • 内存:3712kb
  • [2025-01-21 15:12:27]
  • 提交

answer

#include <bits/stdc++.h>
#ifdef LOCAL
#include "debug.h"
#else
#define deb(...)
#endif
using namespace std;
#define ll long long
#define int long long
#define ull unsigned long long
#define pii pair<int, int>
#define db double
#define baoliu(x, y) cout << fixed << setprecision(y) << x
#define endl "\n"
#define alls(x) (x).begin(), (x).end()
#define fs first
#define sec second
#define bug(x) cerr << #x << " = " << x << endl
const int N = 2e5 + 10;
const int M = 1e6 + 10;
const int inf = 0x3f3f3f3f;
const int mod = 998244353;
const double eps = 1e-8;
const double PI = acos(-1.0);
void solve() {
    int n, f;
    cin >> n >> f;
    vector<pii> a(n + 1);
    for (int i = 1; i <= n; i++) cin >> a[i].fs >> a[i].sec;
    // sort(alls(a), [](pii i, pii j) {
    //     return i.sec < j.sec;
    // });
    int ans = 0;
    int cur = f;
    multiset<array<int, 3>> st;
    for (int i = 1; i <= n; i++) st.insert({a[i].fs, a[i].sec, i});
    vector<int> p;
    vector<int> tmp;
    while (st.size()) {
        auto [l, r, id] = *st.begin();
        if (r <= cur) {
            ans += r - l;
            st.erase(st.begin());
            tmp.push_back(id);
        } else {
            if (l <= cur) {
                ans += r - l;
                st.erase(st.begin());
                cur = r;
                p.push_back(id);
            } else {
                ans += l - cur;
                cur = l;
            }
        }
        deb(l, r, id, ans);
    }
    for (auto x : tmp) p.push_back(x);
    cout << ans << endl;
    for (auto x : p) cout << x << " ";
    cout << endl;
}
signed main() {
    cin.tie(0);
    ios::sync_with_stdio(false);
#ifdef LOCAL
    double starttime = clock();
    // freopen("in.txt", "r", stdin);
    // freopen("out.txt", "w", stdout);
#endif
    int t = 1;
    cin >> t;
    while (t--) solve();
#ifdef LOCAL
    double endtime = clock();
    cerr << "Time Used: " << (double)(endtime - starttime) / CLOCKS_PER_SEC * 1000 << " ms" << endl;
#endif
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3712kb

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: 56ms
memory: 3712kb

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 16 8 7 15 12 5 3 13 17 9 1 19 18 6 11 14 4 
194
5 3 6 1 2 4 
397
9 10 4 11 3 15 2 16 7 6 12 14 8 5 13 1 
733
2 9 15 7 11 3 18 6 14 13 19 10 12 5 16 8 17 4 1 
244
3 10 14 5 6 2 7 13 9 15 1 11 4 12 8 
422
17 18 12 3 19 1 14 16 15 9 5 8 20 4 13 2 7 6 10 11 
104
3 4 2 1 
187
4 3 8 7 10 9 6 5 1 ...

result:

wrong answer Participant declares the cost to be 524, but the plan actually costs 559 (test case 1)