40pts求助
查看原帖
40pts求助
552608
Ask_sum楼主2023/8/21 19:56

rt,WA#3还有RE#10#11#12

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 10;
int T, n, p;
vector <int> r[MAXN];
stack <int> s[MAXN];
int main(){
	scanf("%d", &T);
	while(T--){
		scanf("%d %d", &n, &p);
		for(int i = 1; i <= n; i++)
			r[i % p].push_back(i);
		for(int i = 0; i <= min(n, p); i++){
			int len = r[i].size();
			for(int j = 0; j < len; j++){
				if(i == 0){
					printf("%d ", r[i][j]);
					continue;
				}
				if(s[p - i].size())
					printf("%d %d ", s[p - i].top(), r[i][j]), s[p - i].pop();
				else s[i].push(r[i][j]);
			}
		}
		for(int i = 0; i <= min(p, n); i++){
			while(s[i].size())
				printf("%d ", s[i].top()), s[i].pop();
			r[i].clear();
		}
		puts("");
	}
	return 0;
}
2023/8/21 19:56
加载中...