ans由最短的区间长度决定.
最小的区间长度为d,为了使最小不被包含的最大 则应该取0~d-1
现在构造在m个连续区间中 任意取一个区间都至少要包含0~d-1
构造a1开始为0~d-1,0~d-1一直赋值到数组结束
则现在任取一段l>=d的连续区间,设开头为k则 区间为(k~d-1,0~k-1..)肯定包含0~d-1这些数字
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
typedef long long ll;
const int N=2e5+20;
int a[N];
struct node{
int l;
int r;
}p[N];
int main()
{
int n,m,pos;
cin>>n>>m;
int d=1e6,px,pr;
for(int i=0;i<m;i++)
{
scanf("%d%d",&p[i].l,&p[i].r);
d=min(d,p[i].r-p[i].l+1);
}
cout<<d<<endl;
for(int i=1;i<=n;i++)
{
cout<<i%d;
if(i==n)
cout<<endl;
else
cout<<' ';
}
return 0;
}