求助 WA 0
  • 板块P2391 白雪皑皑
  • 楼主xbb2
  • 当前回复1
  • 已保存回复1
  • 发布时间2021/7/19 19:29
  • 上次更新2023/11/4 14:08:35
查看原帖
求助 WA 0
174806
xbb2楼主2021/7/19 19:29
#include<bits/stdc++.h>
using namespace std;
const int N=2e7+10;
struct tip{
	int l;
	int r;
	int t;
}a[N];
bool cmp(tip a,tip b){return a.l<b.l;}
bool cmp1(tip a,tip b){return a.t>b.t;}
int main(){
//	freopen("P2391.in","r",stdin);
	int n;
	int m;
	int p;
	int q;
	cin>>n>>m>>p>>q;
	for(int i=m;i>=1;i--){
		a[i].l=(i*p+q)%n+1;
		a[i].r=(i*q+p)%n+1;
		a[i].t=i;
		if(a[i].l>a[i].r)swap(a[i].l,a[i].r);
	}
	stable_sort(a+1,a+1+m,cmp1);
	stable_sort(a+1,a+1+m,cmp);
	int j=1;
//	for(int i=1;i<=m;i++)printf("%d %d %d\n",a[i].l,a[i].r,a[i].t);
	for(int i=1;i<=n;i++){
		if(a[j].r<i){
			if(a[j+1].r>=i&&j+1<=m)j++,printf("%d\n",a[j].t);
			else printf("0\n");
		}
		else {
			if(a[j+1].l<=i&&j+1<=m){
				while(j+1<=m&&a[j+1].l<=i&&a[j+1].t>a[j].t)j++;
			}
			printf("%d\n",a[j].t);
		}
	}
	return 0;
}
2021/7/19 19:29
加载中...