Submission #648160

#TimeUsernameProblemLanguageResultExecution timeMemory
648160ymmRed-blue table (IZhO19_stones)C++17
69 / 100
25 ms7744 KiB
#include <bits/stdc++.h> #define Loop(x,l,r) for (ll x = (l); x < (ll)(r); ++x) #define LoopR(x,l,r) for (ll x = (r)-1; x >= (ll)(l); --x) typedef long long ll; typedef std::pair<int, int> pii; typedef std::pair<ll , ll > pll; using namespace std; bool edge(int n, int m) { if (n == 1) { cout << m << '\n'; Loop (i,0,m) cout << '-'; cout << '\n'; return 1; } if (m == 1) { cout << n << '\n'; Loop (i,0,n) cout << '+' << '\n'; return 1; } if (n == 2) { cout << m << '\n'; Loop (i,0,m) cout << '-'; cout << '\n'; Loop (i,0,m) cout << '-'; cout << '\n'; return 1; } if (m == 2) { cout << n << '\n'; Loop (i,0,n) cout << "++" << '\n'; return 1; } if (n <= m && n <= 4) { cout << m+1 << '\n'; Loop (i,0,n-1) { Loop (j,0,m) cout << '-'; cout << '\n'; } Loop (j,0,m) cout << '+'; cout << '\n'; return 1; } if (m <= n && m <= 4) { cout << n+1 << '\n'; Loop (i,0,n) { Loop (j,0,m-1) cout << '+'; cout << "-\n"; } return 1; } if (n == 5 && m%2 == 0) { cout << m+3 << '\n'; Loop (i,0,2) { Loop (j,0,m) cout << '-'; cout << '\n'; } Loop (j,0,m/2+1) cout << '+'; Loop (j,m/2+1,m) cout << '-'; cout << '\n'; Loop (j,0,m/2-1) cout << '-'; Loop (j,m/2-1,m) cout << '+'; cout << '\n'; Loop (j,0,m/2-1) cout << '+'; cout << "--++"; Loop (j,m/2+3,m) cout << '-'; cout << '\n'; return 1; } if (m == 5 && n%2 == 0) { cout << n+3 << '\n'; Loop (i,0,n/2-1) cout << "++-+-\n"; cout << "++--+\n"; cout << "++--+\n"; cout << "+++--\n"; cout << "+++--\n"; Loop (i,n/2+3,n) cout << "+++-+\n"; return 1; } if (n == 8 && m%2 == 0 && m >= 10) { cout << m+5 << '\n'; Loop (i,0,3) { Loop (j,0,m) cout << '-'; cout << '\n'; } Loop (j,0,m/2-1) cout << '-'; Loop (j,m/2-1,m) cout << '+'; cout << '\n'; Loop (j,0,m/2+1) cout << '+'; Loop (j,m/2+1,m) cout << '-'; cout << '\n'; Loop (j,0,m/2-3) cout << '-'; cout << "++--"; Loop (j,m/2+1,m) cout << '+'; cout << '\n'; Loop (j,0,m/2+1) cout << '+'; Loop (j,m/2+1,m) cout << '-'; cout << '\n'; Loop (j,0,m/2-5) cout << '-'; cout << "++----"; Loop (k,m/2+1,m) cout << '+'; cout << '\n'; return 1; } if (m == 8 && n%2 == 0 && n >= 10) { cout << n+5 << '\n'; Loop (i,0,n/2-1) cout << "+++-+-+-\n"; cout << "+++--+-+\n"; cout << "+++--+-+\n"; cout << "++++---+\n"; cout << "++++---+\n"; cout << "++++-+--\n"; cout << "++++-+--\n"; Loop (i,n/2+5,n) cout << "++++-+-+\n"; return 1; } if (n == 6) { char s[] = { "++++--\n" "++++--\n" "+++-+-\n" "+++-+-\n" "+++--+\n" "+++--+\n" }; cout << "9\n"; cout << s; return 1; } return 0; } const int N = 2010; int ans[N][N]; void myfill(int n, int m) { Loop (i,0,n) { Loop (j,0,m) ans[i+1][j+1] = j < m/2? (i&1): !(i&1); } } int mycount(int n, int m) { int x = 0; Loop (i,0,n) { int cnt = 0; Loop (j,0,m) cnt += ans[i][j] == 1; x += cnt > m/2; } Loop (j,0,m) { int cnt = 0; Loop (i,0,n) cnt += ans[i][j] == 0; x += cnt > n/2; } return x; } void solve() { int n, m; cin >> n >> m; if (edge(n, m)) return; Loop (j,0,m) ans[0][j] = 0; Loop (i,0,n) ans[i][0] = 1; if (n%2 == 0) Loop (j,0,m) ans[n-1][j] = 0; if (m%2 == 0) Loop (i,0,n) ans[i][m-1] = 1; myfill(n-1 & -2, m-1 & -2); cout << mycount(n, m) << '\n'; Loop (i,0,n) { Loop (j,0,m) cout << "-+"[ans[i][j]]; cout << '\n'; } } int main() { cin.tie(0) -> sync_with_stdio(false); int t; cin >> t; while (t--) solve(); }

Compilation message (stderr)

stones.cpp: In function 'void solve()':
stones.cpp:209:10: warning: suggest parentheses around '-' in operand of '&' [-Wparentheses]
  209 |  myfill(n-1 & -2, m-1 & -2);
      |         ~^~
stones.cpp:209:20: warning: suggest parentheses around '-' in operand of '&' [-Wparentheses]
  209 |  myfill(n-1 & -2, m-1 & -2);
      |                   ~^~
#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...