Submission #529497

# Submission time Handle Problem Language Result Execution time Memory
529497 2022-02-23T05:06:17 Z wiwiho Railway Trip 2 (JOI22_ho_t4) C++14
11 / 100
2000 ms 15188 KB
#include <bits/stdc++.h>

#define iter(a) a.begin(), a.end()
#define mp make_pair
#define F first
#define S second
#define eb emplace_back
#define lsort(a) sort(iter(a))
#define gsort(a) sort(iter(a), greater<>())

using namespace std;

typedef long long ll;
typedef double ld;

using pii = pair<int, int>;

ll iceil(ll a, ll b){
    return (a + b - 1) / b;
}

int n, K, m;
vector<int> lb, rb, d;

void solve(){

    int s, t;
    cin >> s >> t;

    multimap<pii, int> tmp;
    for(int i = 1; i <= m; i++){
        int l = lb[i], r = rb[i], dir = d[i];
        int tl, tr;
        if(dir == 0){
            tl = l;
            tr = min(l + K - 1, r - 1);
        }
        else{
            tl = max(l + 1, r - K + 1);
            tr = r;
        }
        //cerr << i << " " << tl << " " << tr << "\n";
        tmp.insert(mp(mp(tl, tr), i));
    }
    int l = s, r = s;

    auto upd = [&](){
        //cerr << "upd " << l << " " << r << "\n";
        //for(auto i : tmp) cerr << i.F.F << " " << i.F.S << " " << i.S << "\n";
        auto it = tmp.lower_bound(mp(l, 0));
        //if(it != tmp.end()) cerr << it->F.F << " " << it->F.S << "\n";
        while(it != tmp.begin() && prev(it)->F.S >= l) it--;
        int nl = l, nr = r;
        while(it != tmp.end() && it->F.F <= r){
            //cerr << "go " << it->F.F << " " << it->F.S << "\n";
            int id = it->S;
            if(d[id] == 0){
                nr = max(nr, rb[id]);
            }
            else{
                nl = min(nl, lb[id]);
            }
            it = tmp.erase(it);
        }
        l = nl; r = nr;
    };

    int ans = 0;
    while(t < l || r < t){
        int lstl = l, lstr = r;
        upd();
        ans++;
        if(l == lstl && r == lstr) break;
    }
    //cerr << "ok " << l << " " << r << "\n";
    
    if(t < l || r < t) cout << "-1\n";
    else cout << ans << "\n";

}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    cin >> n >> K >> m;
    lb.resize(m + 1);
    rb.resize(m + 1);
    d.resize(m + 1);

    for(int i = 1; i <= m; i++){
        cin >> lb[i] >> rb[i];
        if(lb[i] > rb[i]) swap(lb[i], rb[i]), d[i] = 1;
    }

    int q;
    cin >> q;
    while(q--) solve();

    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 7 ms 332 KB Output is correct
2 Correct 8 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 7 ms 336 KB Output is correct
5 Correct 8 ms 332 KB Output is correct
6 Correct 6 ms 332 KB Output is correct
7 Incorrect 7 ms 332 KB Output isn't correct
8 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 7 ms 332 KB Output is correct
2 Correct 8 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 7 ms 336 KB Output is correct
5 Correct 8 ms 332 KB Output is correct
6 Correct 6 ms 332 KB Output is correct
7 Incorrect 7 ms 332 KB Output isn't correct
8 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 39 ms 6340 KB Output is correct
2 Correct 34 ms 6212 KB Output is correct
3 Correct 59 ms 7460 KB Output is correct
4 Correct 39 ms 5788 KB Output is correct
5 Correct 130 ms 15188 KB Output is correct
6 Correct 115 ms 15140 KB Output is correct
7 Correct 120 ms 15128 KB Output is correct
8 Correct 51 ms 7688 KB Output is correct
9 Correct 48 ms 7620 KB Output is correct
10 Correct 122 ms 15144 KB Output is correct
11 Correct 120 ms 15116 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 2072 ms 6172 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 2091 ms 15120 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 7 ms 332 KB Output is correct
2 Correct 8 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 7 ms 336 KB Output is correct
5 Correct 8 ms 332 KB Output is correct
6 Correct 6 ms 332 KB Output is correct
7 Incorrect 7 ms 332 KB Output isn't correct
8 Halted 0 ms 0 KB -