제출 #1153558

#제출 시각아이디문제언어결과실행 시간메모리
1153558MighilonBrought Down the Grading Server? (CEOI23_balance)C++20
35 / 100
137 ms57836 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...