QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#593498 | #4633. Coprime Matrices | ucup-team3161# | WA | 1ms | 6316kb | C++14 | 3.0kb | 2024-09-27 14:23:38 | 2024-09-27 14:23:38 |
Judging History
answer
#include <bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);++i)
#define Rep(i,a,b) for(int i=(a);i>=(b);--i)
using namespace std;
int n,m,x,y,w;
int id[305][305],aa[305][305];
int P(int i,int j){
return (i-1)*m+j;
}
typedef vector<int>vi;
#define pb push_back
vi e[100005];
bool vis[100005];
void add(int u,int v){
e[u].pb(v),e[v].pb(u);
}
bool rev;
int tot;
void dfs(int u){
if(vis[u])return; vis[u]=1;
// cout<<"dfs "<<" "<<(u-1)/m+1<<" "<<(u-1)%m+1<<" "<<tot<<"\n";
id[(u-1)/m+1][(u-1)%m+1]=++tot;
for(int v:e[u]) dfs(v);
}
signed main()
{
cin>>n>>m>>x>>y>>w;
puts("Yes");
if(n%2==0 && m%2!=0){
swap(n,m);
rev=1;
}
For(i,1,n){
For(j,1,m){
if((i+j)%2==0){
if(i+1<=n) add(P(i,j),P(i+1,j));
if(j+1<=m) add(P(i,j),P(i,j+1));
}
}
}
For(i,1,n){
For(j,1,m){
if(e[P(i,j)].size()<=1){
// cout<<"GO "<<i<<" "<<j<<"\n";
dfs(P(i,j));
}
}
}
/*
bool ad=0;
if(n%2==1 && m%2==1) ad=1,--m;
bool op=0;
if(m%2==0){
for(int i=1;i<=m;i+=2){
op^=1;
if(n&1){
if(op==1){
For(j,1,n) {
if(j&1)id[j][i]=++tot,id[j][i+1]=++tot;
else id[j][i+1]=++tot,id[j][i]=++tot;
}
}else{
Rep(j,n,1){
if(j&1)id[j][i]=++tot,id[j][i+1]=++tot;
else id[j][i+1]=++tot,id[j][i]=++tot;
}
}
}else{
if(op==1){
For(j,1,n-2){
if(j&1)id[j][i]=++tot,id[j][i+1]=++tot;
else id[j][i+1]=++tot,id[j][i]=++tot;
}
id[n-1][i]=++tot;
id[n][i]=++tot;
id[n][i+1]=++tot;
id[n-1][i+1]=++tot;
}else{
id[n-1][i]=++tot;
id[n][i]=++tot;
id[n][i+1]=++tot;
id[n-1][i+1]=++tot;
Rep(j,n-2,1){
if(j&1)id[j][i]=++tot,id[j][i+1]=++tot;
else id[j][i+1]=++tot,id[j][i]=++tot;
}
}
}
}
}
if(ad){
++m;
op^=1;
if(op==1){
For(j,1,n) id[j][m]=++tot;
}else{
Rep(j,n,1) id[j][m]=++tot;
}
}
if(rev){
For(i,1,n)For(j,1,m)aa[j][i]=id[i][j];
swap(n,m);
For(i,1,n)For(j,1,m)id[i][j]=aa[i][j];
}
*/
int add=(w-id[x][y]);
// add=0;
For(i,1,n){
For(j,1,m){
id[i][j]+=add;
while(id[i][j]<=0)id[i][j]+=n*m;
while(id[i][j]>n*m)id[i][j]-=n*m;
cout<<id[i][j]<<" \n"[j==m];
}
}
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 6316kb
input:
3 3 2 1 3
output:
Yes 2 1 4 3 6 5 8 7 9
result:
ok OK, Accepted.
Test #2:
score: 0
Accepted
time: 0ms
memory: 5964kb
input:
1 1 1 1 1
output:
Yes 1
result:
ok OK, Accepted.
Test #3:
score: -100
Wrong Answer
time: 0ms
memory: 5904kb
input:
8 3 4 2 9
output:
Yes 11 10 14 13 20 19 2 1 12 16 15 22 21 4 3 7 18 17 24 23 6 5 9 8
result:
wrong output format Expected EOLN