QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#694495 | #6677. Puzzle: Sashigane | ustcwaitme# | WA | 0ms | 3664kb | C++23 | 2.2kb | 2024-10-31 18:05:05 | 2024-10-31 18:05:06 |
Judging History
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;
}
Details
Tip: Click on the bar to expand more detailed information
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)