mxqz,为什么评测样例wa,本地ac
查看原帖
mxqz,为什么评测样例wa,本地ac
533162
wanxinlian楼主2024/8/10 14:56

RT

#include<bits/stdc++.h>
using namespace std;

const int N=505;

int n,k;
int ans[N*N][N];
bool used[N][N][N];

int main() {
	cin>>n>>k;
	if(k==n*n) {
		for(int i=0;i<n;i++) { 
			for(int j=0;j<n;j++) {
				cout<<i<<" "<<j<<" "<<(2*n-i-j)%n<<endl;			
			}
		}
		return 0;
	}
	int cnt=0;
	int left=(n*n-k)/3,left2=(n*n-k)%3;
	if(n%3!=0&&(n*n-k)%3==2) {
		if(n-2==0) used[0][1][1]=1;
		else used[1][1][n-2]=1;
	}
	for(int i=0;i<n;i++) {
		for(int j=0;j<n;j++) {
			int a=i,b=j,c=(2*n-i-j)%n;
			if(a==b&&b==c) {
				if(left2>0) continue;
				ans[++cnt][0]=ans[cnt][1]=ans[cnt][2]=a;
				continue;
			}
			if(a>b) swap(a,b);
			if(a>c) swap(a,c);
			if(b>c) swap(b,c);
			if(used[a][b][c]) {left--;continue;}
			if(left>0) {used[a][b][c]=1;left--;continue;}
			ans[++cnt][0]=i;
			ans[cnt][1]=j;
			ans[cnt][2]=(2*n-i-j)%n;
		}
	}
	if(n%3!=0&&(n*n-k)%3==2) cout<<"1 1 1\n";
	for(int i=1+(n%3!=0&&(n*n-k)%3==2);i<=k;i++) {
		cout<<ans[i][0]<<" "<<ans[i][1]<<' '<<ans[i][2]<<endl;
	}
    return 0;
}

2024/8/10 14:56
加载中...