Submission #1024345

#TimeUsernameProblemLanguageResultExecution timeMemory
102434512345678Fire (BOI24_fire)C++17
0 / 100
2069 ms5736 KiB
#include <bits/stdc++.h>

using namespace std;

const int nx=4e5+5;

int n, m, s[nx], e[nx], p[nx], cur=1, res=1, st;

int main()
{
    cin.tie(NULL)->sync_with_stdio(false);
    cin>>n>>m;
    for (int i=1; i<=n; i++) 
    {
        cin>>s[i]>>e[i];
        if (s[i]>e[i]) e[i]+=m;
        else s[i+n]=s[i]+m, e[i+n]=e[i]+m;
    }
    for (int i=1; i<=n; i++)
    {
        pair<int, int> mx={e[i], i};
        for (int j=1; j<=2*n; j++) if (s[j]<=e[i]) mx=max(mx, {e[j], (j>n)?(j-n):j});
        p[i]=mx.second;
    }
    //for (int i=1; i<=n; i++) cout<<i<<' '<<p[i]<<'\n';
    for (int i=1; i<=n; i++) cur=p[cur];
    st=cur;
    if (p[cur]==st) return cout<<-1, 0;
    while (p[cur]!=st) res++, cur=p[cur];
    cout<<res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...