由于火车运载量无限,所以运送每个车站的糖果是相互独立的,所以求从某点开始运送的最远距离,就是枚举该点到每个车站运送的距离,最后取一个最大值。
//从某点离开运送某车站的糖果需要的时间
//两点之间的距离+n*(sz-1)+最后一个糖果运送所需要的距离
int n,m;
int dis(int i,int j){return (j>=i?j-i:(n-(i-j)));}//i到 j
vector<int>candy[5555];
void solve()
{
cin>>n>>m;
rpp(i,m)
{
int a,b;cin>>a>>b;
candy[a].push_back(b);
}
rpp(i,n) sort(all(candy[i]),[i](int a,int b){return dis(i,a)<dis(i,b);});
rpp(i,n)
{
int ans=0;
rpp(j,n)
{
if(sz(candy[j])==0) continue;
int tag=dis(i,j)+(sz(candy[j])-1)*n+dis(j,candy[j][0]);
ans=max(ans,tag);
}
cout<<ans<<" ";
}
cout<<endl;
}
signed main()
{
fast;
solve();
return 0;
}