#include <bits/stdc++.h>
using namespace std;
#ifdef DEBUG
#include "../Library/debug.h"
#else
#define dbg(x...)
#endif
typedef long long ll;
typedef long double ld;
typedef pair<int, int> pi;
typedef pair<ll, ll> pl;
typedef vector<int> vi;
typedef vector<bool> vb;
typedef vector<ll> vl;
typedef vector<pi> vpi;
typedef vector<pl> vpl;
#define FOR(i, a, b) for (int i = (a); i < (b); ++i)
#define F0R(i, a) for (int i = 0; i < (a); ++i)
#define FORd(i, a, b) for (int i = (b) - 1; i >= (a); --i)
#define F0Rd(i, a) for (int i = (a) - 1; i >= 0; --i)
#define trav(a, x) for (auto& a : x)
#define f first
#define s second
#define pb push_back
#define sz(x) (int)(x).size()
#define all(x) x.begin(), x.end()
const char nl = '\n';
const int INF = 1e9;
// const ll MOD = 1e9 + 7;
const ll MOD=998244353;
void solve(){
int n,s,t;
cin>>n>>s>>t;
if(s!=2)return;
vector<vi> a(n,vi(s));
F0R(i,n)F0R(j,s)cin>>a[i][j];
int l=0;
F0R(i,n)l=max(l,*max_element(all(a[i])));
vpi cnt(l+1);
vi r(l+1); // reverse
F0R(i,l+1)cnt[i]={0,i};
dbg(l)
F0R(i,n)F0R(j,s){
int k=cnt[a[i][j]].s;
assert(cnt[k].f<2);
cnt[k].f++;
if(cnt[k].f==2){
cnt.pb({0,l+1});
r.pb(0);
cnt[a[i][j]].s=++l;
}
r[k]=a[i][j];
a[i][j]=k;
}
dbg(a);
vector<vi> adj(n*s);
vi p(l+1,-1);
F0R(i,n)F0R(j,s){
if(j+1<s){
adj[i*s+j].pb(i*s+j+1);
adj[i*s+j+1].pb(i*s+j);
}
if(!~p[a[i][j]])
p[a[i][j]]=i*s+j;
else{
adj[p[a[i][j]]].pb(i*s+j);
adj[i*s+j].pb(p[a[i][j]]);
}
}
vector<vi> b(n,vi(s)),ans(n,vi(s));
vector<vb> vis(n,vb(s));
function<void(int,int,int)> dfs=[&](int v,int p,int x)->void{
if(vis[v/s][v%s])
return;
vis[v/s][v%s]=true;
b[v/s][v%s]=x;
trav(u,adj[v]){
if(u==p)continue;
dfs(u,v,x^1);
}
};
F0R(i,n)F0R(j,s)
if(!vis[i][j])
dfs(i*s+j,-1,0);
F0R(i,n)F0R(j,s){
ans[i][b[i][j]]=r[a[i][j]];
}
F0R(i,n)F0R(j,s)cout<<ans[i][j]<<" \n"[j==s-1];
}
int32_t main(){
ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int TC = 1;
// cin >> TC;
while(TC--){
solve();
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |