问刚才月赛 T1
  • 板块学术版
  • 楼主LXGLR
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/8/20 18:09
  • 上次更新2023/11/3 02:25:09
查看原帖
问刚才月赛 T1
1048993
LXGLR楼主2023/8/20 18:09

rt,scored 40pts.

#include<bits/stdc++.h>
using namespace std;
int read() {
    register int x = 0,f = 1;register char ch;
    ch = getchar();
    while(ch > '9' || ch < '0'){if(ch == '-') f = -f;ch = getchar();}
    while(ch <= '9' && ch >= '0'){x = x * 10 + ch - 48;ch = getchar();}
    return x * f;
}
void write(int x){
	if(x<0){putchar('-');x=-x;}
	if(x>9){write(x/10);putchar(x%10+'0');}
	else putchar(x+'0');
	return;
}
int n,p;
int main(){
	int T;
	T=read();
	while(T--){
		bool k[100001]={0};
		n=read();p=read();
		if(p-n>=n){
			for(int i=1;i<=n;i++){
				write(i);putchar(32);
			}
		}
		else if(p-n>=0){
			for(int i=1;i<=n;i++){
				if(p-i<=n && p-i>0 && !k[i] && !k[p-i] && p-i!=i){
					write(i);putchar(32);write(p-i);putchar(32);
					k[i]=1,k[p-i]=1;
				}
			}
			for(int i=1;i<=n;i++){
				if(!k[i]){
					write(i);putchar(32);
				}
			}
		}
		else if(p!=2){
			printf("1 ");k[1]=1;
			int x=1,y=p-1,lx=1,next=2;
			for(int i=2;i<=n;i++){
				if(!k[y] && y<=n && y>0){
					write(y);putchar(32);
					lx++,x=y,k[y]=1,y=p*lx-x;
				}
				else{
					for(int j=next;j<=n;j++){if(k[j]==0){next=j;break;}}
					x=next,y=p-x;k[x]=1,lx=1;
					write(x);putchar(32);
				}
			}
		}
		else{
			for(int i=1;i<=n;i+=2){
				write(i);putchar(32);
			}
			for(int i=2;i<=n;i+=2){
				write(i),putchar(32);
			}
		}
		putchar(10);
	}
	return 0;
}

我写这么大长串带码干啥...

2023/8/20 18:09
加载中...