Submission #683751

#TimeUsernameProblemLanguageResultExecution timeMemory
683751NintsiChkhaidzeRed-blue table (IZhO19_stones)C++14
53 / 100
30 ms7888 KiB
#include <bits/stdc++.h> using namespace std; const int NN = 1005; int a[NN][NN],y[NN],x[NN],f[NN],ans,n,m,b[NN][NN]; void solve(int n,int m){ ans = 0; int N = n - n/2 - 1,P = 0; for (int p = 0; p <= m; p++){ int k = m/2 + 1 - p,ig = 0; if (k>0) ig = min(n, ((m - p)/k)*N); else ig = n; if (ans < m - p + ig){ P = p; ans = m - p + ig; } } for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) a[i][j] = 0; for (int i = 1; i <= n; i++) for (int j = 1; j <= P; j++) a[i][j] = 1; int k = m/2 + 1 - P; for (int j = 1; j <= P; j++) y[j] = 0; for (int j = P+1; j <= m; j++) y[j] = N; for (int i = 1; i <= n; i++){ int cnt = 0; for (int j = 1; j <= m; j++) f[j] = 0; for (int j = 1; j <= m; j++){ if (y[j]) { --y[j]; f[j] = 1; cnt++; } if (cnt == k) break; } if (cnt < k) break; for (int j = 1; j <= m; j++) if (f[j]) a[i][j] = 1; } } void rotate(){ for (int i = 1; i <= m; i++) for (int j = 1; j <= n; j++) b[i][j] = a[i][j]; for (int i = 1; i <= n; i++){ for (int j = 1; j <= m; j++){ a[i][j] = b[j][i]; if (a[i][j]) a[i][j] = 0; else a[i][j] = 1; } } } signed main (){ ios_base::sync_with_stdio(0),cin.tie(NULL),cout.tie(NULL); int T; cin>>T; while (T--){ cin>>n>>m; if (m <= n) solve(m,n),rotate(); else solve(n,m); cout<<ans<<endl; for (int i = 1; i <= n; i++){ for (int j = 1; j <= m; j++){ if (a[i][j]) cout<<"+"; else cout<<"-"; } cout<<"\n"; } } }
#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...