Submission #1105219

#TimeUsernameProblemLanguageResultExecution timeMemory
1105219alexddFire (BOI24_fire)C++17
40 / 100
2068 ms3404 KiB
#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9;
int n,m;
pair<int,int> v[200005];
int nxt[200005];
void calc_nxt()
{
    for(int i=1;i<=n;i++)
    {
        int mxm=v[i].second;
        nxt[i]=-1;
        for(int j=1;j<=n;j++)
        {
            if(j==i)
                continue;
            if(v[j].first <= v[i].second && v[j].second > mxm)
            {
                mxm = v[j].second;
                nxt[i] = j;
            }
        }
        //cout<<i<<" "<<nxt[i]<<" nxt\n";
    }
}
int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        cin>>v[i].first>>v[i].second;
        if(v[i].first > v[i].second)
            v[i].second += m;
    }
    calc_nxt();
    int rez=INF;
    for(int i=1;i<=n;i++)
    {
        if(v[i].second >= m)
        {
            int unde=-1,mxm=-1;
            for(int j=1;j<=n;j++)
            {
                if(i!=j && v[j].first <= v[i].second-m)
                {
                    if(v[j].second > mxm)
                    {
                        mxm = v[j].second;
                        unde = j;
                    }
                }
            }
            //cout<<i<<" "<<unde<<" incearca\n";
            int cur=unde,cnt=1;
            while(cur!=-1)
            {
                cnt++;
                if(v[cur].second >= v[i].first)
                    break;
                //cout<<cur<<" cur\n";
                cur = nxt[cur];
            }
            if(cur!=-1) rez = min(rez, cnt);
        }
    }
    if(rez==INF)
        rez=-1;
    cout<<rez;
    return 0;
}
#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...