답안 #1105228

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1105228 2024-10-25T18:50:34 Z alexdd Fire (BOI24_fire) C++17
0 / 100
2000 ms 3300 KB
#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9;
int n,m;
pair<int,int> v[200005];
int prefmax[200005];
int nxt[200005];
int get_ult(int lim)
{
    int st=0,dr=n,ans=0;
    while(st<=dr)
    {
        int mij=(st+dr)/2;
        if(v[mij].first <= lim)
        {
            ans = mij;
            st = mij+1;
        }
        else
            dr = mij-1;
    }
    return ans;
}
void calc_nxt()
{
    for(int i=1;i<=n;i++)
    {
        nxt[i] = prefmax[get_ult(v[i].second)];
        //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;
    }
    sort(v+1,v+1+n);
    prefmax[0] = -1;
    for(int i=1;i<=n;i++)
    {
        if(v[i].second > v[prefmax[i-1]].second)
            prefmax[i] = i;
        else
            prefmax[i] = prefmax[i-1];
    }
    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<=get_ult(v[i].second-m);j++)
            {
                if(v[j].second > mxm)
                {
                    mxm = v[j].second;
                    unde = j;
                }
            }
            //int unde = prefmax[get_ult(v[i].second-m)];
            if(unde==i) unde = -1;

            int cur=unde,cnt=1;
            while(cur!=-1)
            {
                cnt++;
                if(v[cur].second >= v[i].first)
                    break;
                cur = nxt[cur];
            }
            if(cur!=-1) rez = min(rez, cnt);
        }
    }
    if(rez==INF)
        rez=-1;
    cout<<rez;
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 2384 KB Output is correct
2 Correct 1 ms 2384 KB Output is correct
3 Correct 1 ms 2384 KB Output is correct
4 Correct 1 ms 2384 KB Output is correct
5 Correct 1 ms 2552 KB Output is correct
6 Correct 1 ms 2384 KB Output is correct
7 Correct 1 ms 2556 KB Output is correct
8 Execution timed out 2052 ms 2384 KB Time limit exceeded
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 2384 KB Output is correct
2 Correct 1 ms 2384 KB Output is correct
3 Correct 1 ms 2384 KB Output is correct
4 Correct 1 ms 2384 KB Output is correct
5 Correct 1 ms 2552 KB Output is correct
6 Correct 1 ms 2384 KB Output is correct
7 Correct 1 ms 2556 KB Output is correct
8 Execution timed out 2052 ms 2384 KB Time limit exceeded
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 2384 KB Output is correct
2 Correct 1 ms 2384 KB Output is correct
3 Correct 1 ms 2384 KB Output is correct
4 Correct 1 ms 2384 KB Output is correct
5 Correct 1 ms 2552 KB Output is correct
6 Correct 1 ms 2384 KB Output is correct
7 Correct 1 ms 2556 KB Output is correct
8 Execution timed out 2052 ms 2384 KB Time limit exceeded
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 2384 KB Output is correct
2 Correct 1 ms 2384 KB Output is correct
3 Correct 1 ms 2384 KB Output is correct
4 Correct 1 ms 2384 KB Output is correct
5 Correct 1 ms 2608 KB Output is correct
6 Correct 1 ms 2552 KB Output is correct
7 Correct 1 ms 2384 KB Output is correct
8 Correct 1 ms 2384 KB Output is correct
9 Correct 1 ms 2384 KB Output is correct
10 Correct 1 ms 2384 KB Output is correct
11 Correct 1 ms 2384 KB Output is correct
12 Correct 1 ms 2384 KB Output is correct
13 Correct 1 ms 2384 KB Output is correct
14 Correct 1 ms 2384 KB Output is correct
15 Correct 4 ms 2384 KB Output is correct
16 Correct 3 ms 2384 KB Output is correct
17 Correct 14 ms 2516 KB Output is correct
18 Correct 4 ms 2384 KB Output is correct
19 Correct 4 ms 2384 KB Output is correct
20 Execution timed out 2093 ms 3300 KB Time limit exceeded
21 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 2384 KB Output is correct
2 Correct 1 ms 2384 KB Output is correct
3 Correct 1 ms 2384 KB Output is correct
4 Correct 1 ms 2384 KB Output is correct
5 Execution timed out 2090 ms 2384 KB Time limit exceeded
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 2384 KB Output is correct
2 Correct 1 ms 2384 KB Output is correct
3 Correct 1 ms 2384 KB Output is correct
4 Correct 1 ms 2384 KB Output is correct
5 Correct 1 ms 2552 KB Output is correct
6 Correct 1 ms 2384 KB Output is correct
7 Correct 1 ms 2556 KB Output is correct
8 Execution timed out 2052 ms 2384 KB Time limit exceeded
9 Halted 0 ms 0 KB -