Submission #173538

#TimeUsernameProblemLanguageResultExecution timeMemory
173538srvltRed-blue table (IZhO19_stones)C++14
100 / 100
211 ms5408 KiB
//#pragma GCC optimize("Ofast") //#pragma GCC target("avx,avx2,fma") #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #define ordered_set tree <pair <int, int>, null_type, less <pair <int, int> >, rb_tree_tag, tree_order_statistics_node_update> using namespace __gnu_pbds; #define ll long long #define db double #define pb push_back #define ppb pop_back #define fi first #define se second #define mp make_pair #define size(x) (int)(x).size() #define all(x) (x).begin(), (x).end() #define low_b lower_bound #define endl "\n" //#define int long long using namespace std; void dout() { cerr << endl; } template <typename Head, typename... Tail> void dout(Head H, Tail... T) { cerr << H << ' '; dout(T...); } //mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); typedef pair <int, int> pii; const int N = 1003; int n, m, a[N][N]; set <pii> c; void cleanup() { c.clear(); } void solve(int tc) { // check for (int i = 0; i < n; j++) // 1(+) row, 0(-) col memset(a, -1, sizeof(a)); cin >> n >> m; int k, ans = 0; pii z; if (n <= m) { for (int i = 1; i <= m; i++) { c.insert({0, i}); } for (int i = 1; i <= n; i++) { k = m / 2 + 1; int cur = 0; while (k--) { z = *c.begin(); if (z.fi == n - (n / 2 + 1)) { break; } cur++; c.erase(c.begin()); a[i][z.se] = 1; z.fi++; c.insert(z); } if (cur == m / 2 + 1) { ans++; } for (int j = 1; j <= m; j++) { if (a[i][j] == -1) { a[i][j] = 0; } } } for (auto i : c) { if (n - i.fi >= n / 2 + 1) { ans++; } } } else { for (int i = 1; i <= n; i++) { c.insert({0, i}); } for (int i = 1; i <= m; i++) { k = n / 2 + 1; int cur = 0; while (k--) { z = *c.begin(); if (z.fi == m - (m / 2 + 1)) { break; } cur++; c.erase(c.begin()); a[z.se][i] = 0; z.fi++; c.insert(z); } if (cur == n / 2 + 1) { ans++; } for (int j = 1; j <= n; j++) { if (a[j][i] == -1) { a[j][i] = 1; } } } for (auto i : c) { if (m - i.fi >= m / 2 + 1) { ans++; } } } 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 << endl; } } signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); // freopen("input.txt", "r", stdin); // freopen("output.txt", "w", stdout); int tc = 1; cin >> tc; for (int i = 0; i < tc; i++) { solve(i); cleanup(); } }
#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...