QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#694495#6677. Puzzle: Sashiganeustcwaitme#WA 0ms3664kbC++232.2kb2024-10-31 18:05:052024-10-31 18:05:06

Judging History

你现在查看的是最新测评结果

  • [2024-10-31 18:05:06]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3664kb
  • [2024-10-31 18:05:05]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl "\n"
const int N=1e5+10;
int n,bi,bj;
int num=0;
struct sb{
	int r,c,h,w;
}que[N];


void solve(){
	cin>>n>>bi>>bj;
	int i1,j1,i2,j2,di,dj;
	if(n%2==0){
		if(bi<=n/2) di=n/2-bi;
		else di=n/2+1-bi;
		if(bj<=n/2) dj=n/2-bj;
		else dj=n/2+1-bj;
		int len=max(abs(di),abs(dj));
		i1=n/2-len;
		j1=n/2-len;
		i2=n/2+1+len;
		j2=n/2+1+len;
	}
	else{
		int mid=(n/2+1);
		di=mid-bi;
		dj=mid-bj;
		int len=max(abs(di),abs(dj));
		i1=mid-len;
		j1=mid-len;
		i2=mid+len;
		j2=mid+len;
	}
	
	if((dj>=0&&abs(dj)>=abs(di))||(di>=0&&abs(di)>=abs(dj))){
		for(int i=bi+1,j=bj+1;i<=i2&&j<=j2;i++,j++){
			++num;
			que[num].r=i,que[num].c=j;
			que[num].h=-(i-bi);
			que[num].w=-(j-bj);
		}//往右下走的
		int pp=abs(que[num].h);
		auto& cur=que[num];
		for(int i=bi-1,j=cur.c+1;i>=i1&&j<=j2;i--,j++){
			++num;
			que[num].r=i,que[num].c=j;
			que[num].h=-(i-bi-pp);
			que[num].w=-(j-cur.c+pp);
		}
		
		for(int i=cur.r+1,j=bj-1;i<=i2&&j>=j1;i++,j--){
			++num;
			que[num].r=i,que[num].c=j;
			que[num].h=-(i-cur.r+pp);
			que[num].w=-(j-bj-pp);
		}
	}
	else{
		//往左上走
		for(int i=bi-1,j=bj-1;i>=i1&&j>=j1;i--,j--){
			++num;
			que[num].r=i,que[num].c=j;
			que[num].h=-(i-bi);
			que[num].w=-(j-bj);
		}
		int pp=abs(que[num].h);
		auto& cur=que[num];
		for(int i=bi+1,j=cur.c-1;i<=i2&&j>=j1;i++,j--){
			++num;
			que[num].r=i,que[num].c=j;
			que[num].h=-(i-bi+pp);
			que[num].w=-(j-cur.c-pp);
		}
		
		for(int i=cur.r-1,j=bj+1;i>=i1&&j<=j2;i--,j++){
			++num;
			que[num].r=i,que[num].c=j;
			que[num].h=-(i-cur.r-pp);
			que[num].w=-(j-bj+pp);
		}
	}
	
	for(int i=i1-1,j=j1-1;i>0&&j>0;i--,j--){
		++num;
		que[num].r=i,que[num].c=j;
		que[num].h=i2-i;que[num].w=j2-j;
	}
	for(int i=i2+1,j=j2+1;i<=n&&j<=n;i++,j++){
		++num;
		que[num].r=i,que[num].c=j;
		que[num].h=i1-i-1;que[num].w=j1-j-1;
	}
	//cout<<i1<<" "<<j1<<" "<<i2<<" "<<j2<<endl;
	cout<<"YES"<<endl;
	cout<<num<<endl;
	for(int i=1;i<=num;i++) cout<<que[i].r<<" "<<que[i].c<<" "<<que[i].h<<" "<<que[i].w<<endl;
}

signed main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int t=1;
	//cin>>t;
	while(t--)
		solve();
	return 0;
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 3580kb

input:

5 3 4

output:

YES
4
2 3 1 1
4 2 -2 2
1 1 3 3
5 5 -4 -4

result:

ok Correct. (1 test case)

Test #2:

score: 0
Accepted
time: 0ms
memory: 3664kb

input:

1 1 1

output:

YES
0

result:

ok Correct. (1 test case)

Test #3:

score: 0
Accepted
time: 0ms
memory: 3600kb

input:

3 2 3

output:

YES
2
1 2 1 1
3 1 -2 2

result:

ok Correct. (1 test case)

Test #4:

score: 0
Accepted
time: 0ms
memory: 3652kb

input:

10 10 5

output:

YES
9
9 4 1 1
8 3 2 2
7 2 3 3
6 1 4 4
5 6 5 -5
4 7 6 -6
3 8 7 -7
2 9 8 -8
1 10 9 -9

result:

ok Correct. (1 test case)

Test #5:

score: -100
Wrong Answer
time: 0ms
memory: 3588kb

input:

10 5 7

output:

YES
9
4 6 1 1
6 5 -2 2
7 4 -3 3
3 3 4 4
2 2 5 5
1 1 6 6
8 8 -5 -5
9 9 -6 -6
10 10 -7 -7

result:

wrong answer At least one cell is left uncovered. (test case 1)