78分,大佬们来看看哪错了?
查看原帖
78分,大佬们来看看哪错了?
551894
lemon2021楼主2023/1/11 21:04

紧急需要大佬们的帮助!!!

#include<iostream>
#include<algorithm>
using namespace std;
struct line
{
    long long begin;
    long long end;
};
line a[1000001];
bool cmp(line x,line y)
{
    return x.begin<y.begin;
}
int main()
{
    long long n;
    long long k;
    cin>>n>>k;
    for(long long i=1;i<=k;i++)
    {
        cin>>a[i].begin>>a[i].end;
        if(a[i].begin>a[i].end)
        {
            a[i].end+=n;
        }
    }
    a[k+1].begin=1e18;
    a[k+1].end=1e18;
    long long sum=1e18;
    sort(a+1,a+1+k,cmp);
    for(long long i=1;i<=k;i++)
    {
        long long l,r;
        long long ans=0;
        l=a[i].begin+n;
        r=a[i].end;
        ans++;
        bool flag=false;
        long long maxend=0;
        if(i!=1)
        {
            a[i-1].begin+=n;
            a[i-1].end+=n;
        }
        for(long long j=i+1;j<k+i;j++)
        {
            if(j>k)
            {
                flag=true;
                j-=k;
            }
          if(a[j].begin<=r+1)
          {
                if(a[j].end>a[maxend].end)
                {
                  maxend=j;
                }
                if(a[j+1].begin>r+1)
                {
              r=a[maxend].end;
              ans++;
              if(r>=l-1)
              {
                  sum=min(sum,ans);
            break;
              }
                }
            }
            else
            {
                break;
            }
            if(flag)
            {
                j+=k;
            }
        }
    }
    if(sum==1e18)
    {
        cout<<"impossible";
    }
    else
    {
        cout<<sum;
    }
    return 0;
}
2023/1/11 21:04
加载中...