Submission #66778679


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
using pii = pair<int,int>;

int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int N;
    cin >> N;
    int M = 2*N;
    vector<int> A(N+1), B(N+1);
    for(int i=1;i<=N;i++){
        cin >> A[i] >> B[i];
    }

    struct Seg { int l, r, id; };
    vector<Seg> segs;
    segs.reserve(3*N);
    for(int i=1;i<=N;i++){
        int a=A[i], b=B[i];
        if(a < b){
            segs.push_back({a, b, i});
        } else {
            segs.push_back({a, b+M, i});
        }
    }
    int K = segs.size();
    for(int i=0;i<K;i++){
        auto &S = segs[i];
        if(S.r <= M){
            segs.push_back({S.l+M, S.r+M, S.id});
        }
    }

    sort(segs.begin(), segs.end(),
         [&](auto &x, auto &y){
             if(x.l!=y.l) return x.l<y.l;
             return x.r<y.r;
         });

    vector<int> parent(N+1, 0),  
                bestR(N+1, INT_MAX);
    set<pair<int,int>> active;    
    for(auto &S: segs){
        while(!active.empty() && active.begin()->first < S.l)
            active.erase(active.begin());
        auto it = active.lower_bound({S.r, -1});
        if(it != active.end()){
            int pid = it->second;
            if(it->first < bestR[S.id]){
                bestR[S.id] = it->first;
                parent[S.id] = pid;
            }
        }
        active.insert({S.r, S.id});
    }
    vector<vector<int>> adj(N+1);
    for(int i=1;i<=N;i++){
        adj[i].push_back(parent[i]);
        adj[parent[i]].push_back(i);
    }
    vector<int> depth(N+1, -1);
    queue<int>q;
    depth[0] = 0;
    q.push(0);
    int maxDepth = 0;
    while(!q.empty()){
        int u = q.front(); q.pop();
        for(int v: adj[u]){
            if(depth[v]==-1){
                depth[v] = depth[u]+1;
                maxDepth = max(maxDepth, depth[v]);
                q.push(v);
            }
        }
    }
    int far = 0;
    for(int i=0;i<=N;i++){
        if(depth[i] > depth[far]) far = i;
    }
    vector<int> dist(N+1, -1);
    dist[far]=0;
    q.push(far);
    int diam = 0;
    while(!q.empty()){
        int u = q.front(); q.pop();
        for(int v: adj[u]){
            if(dist[v]==-1){
                dist[v] = dist[u]+1;
                diam = max(diam, dist[v]);
                q.push(v);
            }
        }
    }
    cout << max(maxDepth, diam) << "\n";
    return 0;
}

Submission Info

Submission Time
Task G - Longest Chord Chain
User Kifff12
Language C++ 20 (gcc 12.2)
Score 0
Code Size 2491 Byte
Status WA
Exec Time 197 ms
Memory 32904 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 575
Status
AC × 3
AC × 8
WA × 22
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt, random_10.txt, random_11.txt, random_12.txt, random_13.txt, random_14.txt, random_15.txt, random_16.txt, random_17.txt, random_18.txt, random_19.txt, random_20.txt, random_21.txt, random_22.txt, random_23.txt, random_24.txt, random_25.txt, random_26.txt, random_27.txt, sample_01.txt, sample_02.txt, sample_03.txt
Case Name Status Exec Time Memory
random_01.txt WA 197 ms 22580 KiB
random_02.txt WA 181 ms 21528 KiB
random_03.txt WA 197 ms 22608 KiB
random_04.txt WA 27 ms 6648 KiB
random_05.txt WA 193 ms 22632 KiB
random_06.txt WA 77 ms 11676 KiB
random_07.txt WA 193 ms 22596 KiB
random_08.txt WA 108 ms 14900 KiB
random_09.txt WA 193 ms 22748 KiB
random_10.txt WA 61 ms 10208 KiB
random_11.txt WA 193 ms 22596 KiB
random_12.txt WA 174 ms 21020 KiB
random_13.txt WA 193 ms 22652 KiB
random_14.txt WA 122 ms 16332 KiB
random_15.txt WA 193 ms 22724 KiB
random_16.txt WA 157 ms 19328 KiB
random_17.txt WA 192 ms 22664 KiB
random_18.txt WA 35 ms 7576 KiB
random_19.txt WA 193 ms 22584 KiB
random_20.txt WA 183 ms 21788 KiB
random_21.txt AC 1 ms 3436 KiB
random_22.txt AC 73 ms 25060 KiB
random_23.txt AC 73 ms 25036 KiB
random_24.txt AC 141 ms 31308 KiB
random_25.txt WA 117 ms 24684 KiB
random_26.txt AC 187 ms 32904 KiB
random_27.txt WA 173 ms 24388 KiB
sample_01.txt AC 1 ms 3492 KiB
sample_02.txt AC 1 ms 3516 KiB
sample_03.txt AC 1 ms 3644 KiB