Submission #1286225

#TimeUsernameProblemLanguageResultExecution timeMemory
1286225LaMatematica14Roller Coaster Railroad (IOI16_railroad)C++20
0 / 100
58 ms6596 KiB
#include "railroad.h"
#include <bits/stdc++.h>
using namespace std;

long long plan_roller_coaster(std::vector<int> s, std::vector<int> t) {
    int n = (int) s.size();
    vector<pair<int, int>> s_ord(n), t_ord(n);
    for (int i = 0; i < n; i++) s_ord[i] = {s[i], i};
    for (int i = 0; i < n; i++) t_ord[i] = {t[i], i};
    sort(s_ord.rbegin(), s_ord.rend());
    sort(t_ord.rbegin(), t_ord.rend());

    int j = 0;
    bool sec = 0, has_sp = 0;
    for (int i = 0; i < n; i++) {
        while (j < n && s_ord[j].first >= t_ord[i].first) j++;
        int uni = j;
        if (t_ord[i].first <= s[t_ord[i].second]) {
            if (i == 0) uni--;
            else if (s[t_ord[i].second] < t_ord[i-1].first) uni--;
        }
        if (has_sp) {
            uni++;
            if ((sec && j > n-2) || (j > n-1)) uni--;
        }
        if (uni < i+1) {
            assert(uni == i);
            if (has_sp) return 1;
            if (i == 0 && t_ord[i].second == s_ord[n-1].second) sec = 1;
            has_sp = 1;
            i--; // redo
        } 
    }
    return 0;
}

Compilation message (stderr)

railroad.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
railroad_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...