Submission #613947

#TimeUsernameProblemLanguageResultExecution timeMemory
613947Mohammed_AtalahRed-blue table (IZhO19_stones)C++17
15 / 100
29 ms1656 KiB
/// Template path: /home/mohammed/.config/sublime-text-3/Packages/User #include <bits/stdc++.h> #include <ext/pb_ds/tree_policy.hpp> #include <ext/pb_ds/assoc_container.hpp> using namespace std; using namespace __gnu_pbds; // typedef typedef long long ll; typedef long double ld; typedef vector<int> vecint; typedef vector<char> vecchar; typedef vector<string> vecstr; typedef vector<long long> vecll; typedef tree<int, null_type, less_equal<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; // Marcos #define endl ("\n") #define int long long #define mod 1000000007 #define pi (3.141592653589) #define REP(i,a,b) for (int i = a; i < b; i++) #define RREP(i,a,b) for (int i = a; i > b; i--) #define fast ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr) // Functions long long squared(long long x) {return (x * x) % mod;} int factorial(int n) {long long res = 1; for (int i = 1; i <= n; i++) {res = ((res * i) % mod + mod) % mod ;} return res;} long long power(long long x, long long p) {if (p == 0) {return 1;} if (p % 2 == 1) {return (power(x, p - 1) * x) % mod;} return squared(power(x, p / 2));} // cout << fixed; // cout << setprecision(4); // ---------(^_^)--------- // void main_solve() { int n, m; cin >> n >> m; string s = ""; for (int i = 0; i < m; i ++) { s += ((n > m) ? '+' : '-'); } vector<string> v(n, s); int result = max(n, m); if (n > m) { queue<vector<int>>q; for (int i = 0; i < n ; i++) { q.push({1, i}); } int e = (m / 2) - ((m % 2 == 0) ? 1 : 0); for (int i = 0; i < m ; i++) { int w = (n / 2) + 1; int t = 0; while (w-- && !q.empty()) { vector<int> vv = q.front(); q.pop(); int a = vv[1]; int b = vv[0]; v[a][i] = '-'; if (b < e) { q.push({b + 1, a}); } t++; } if (t == (n / 2) + 1) { result++; } } } else { // cout << "hello" << endl; queue<vector<int>>q; int e = (n / 2) - ((n % 2 == 0) ? 1 : 0); for (int i = 0; i < m && e ; i++) { q.push({1, i}); } // cout << e << endl; for (int i = 0; i < n && e ; i++) { int w = (m / 2) + 1; int t = 0; while (w-- && !q.empty()) { vector<int> vv = q.front(); q.pop(); int a = vv[1]; int b = vv[0]; v[i][a] = '+'; if (b < e) { q.push({b + 1, a}); } t++; } if (t == (m / 2) + 1) { result++; } } } cout << result << endl; for (auto &i : v) { cout << i << endl; } } int32_t main() { fast; // Just another problem (-_-) int t; cin >> t; // t = 1; while (t--) { main_solve(); } }
#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...