Submission #173034

#TimeUsernameProblemLanguageResultExecution timeMemory
173034RakhmandRed-blue table (IZhO19_stones)C++14
100 / 100
55 ms2380 KiB
// // Road2Master.cpp // Road2Master // // Created by Rakhman Abdirashov on 12/14/19. // Copyright © 2019 Rakhman Abdirashov. All rights reserved. // #include <cstring> #include <vector> #include <list> #include <map> #include <set> #include <deque> #include <stack> #include <bitset> #include <algorithm> #include <functional> #include <numeric> #include <utility> #include <sstream> #include <iostream> #include <iomanip> #include <cstdio> #include <queue> #include <cmath> #include <cstdlib> #include <ctime> #include <cassert> #include <iterator> #define ios ios_base::sync_with_stdio(0), cout.tie(0), cin.tie(0); #define S second #define F first #define pb push_back #define nl '\n' #define NL cout << '\n'; #define EX exit(0) #define all(s) s.begin(), s.end() #define no_answer {cout << "NO"; exit(0);} #define FOR(i, start, finish, k) for(llong i = start; i <= finish; i += k) const long long MXN = 1e5 + 10; const long long MNN = 1e4 + 520; const long long MOD = 1e9 + 7; const long long INF = 1e18; const long long OO = 1e9; typedef long long llong; typedef unsigned long long ullong; using namespace std; int n, m; bool ans[1010][1010]; int cnt[1010]; int sum1(int n, int m){ int sum = n; for(int i = 1; i <= n; i++){ for(int j = 1; j <= m; j++){ ans[i][j] = 1; } cnt[i] = m; } int last = 1; for(int i = 1; i <= m; i++){ int lol = n / 2 + 1; int cur = last; while(lol != 0){ if(cnt[cur] > m / 2 + 1){ ans[cur][i] = 0; cnt[cur]--; lol--; } cur++; if(cur == n + 1){ cur = 1; } if(cur == last) break; } if(lol != 0) break; else { sum++; last = cur; } } return sum; } int sum2(int n, int m){ int sum = m; for(int i = 1; i <= n; i++){ for(int j = 1; j <= m; j++){ ans[i][j] = 0; cnt[j] = n; } } int last = 1; for(int i = 1; i <= n; i++){ int lol = m / 2 + 1; int cur = last; while(lol != 0){ if(cnt[cur] > n / 2 + 1){ cnt[cur]--; ans[i][cur] = 1; lol--; } cur++; if(cur == m + 1){ cur = 1; } if(cur == last) break; } if(lol == 0) { sum++; last = cur; } else break; } return sum; } void output(int n, int m){ if(sum1(n, m) >= sum2(n, m)){ cout << sum1(n, m) << nl; }else{ cout << sum2(n, m) << nl; } for(int i = 1; i <= n; i++){ for(int j = 1; j <= m; j++){ cout << (ans[i][j] == 1 ? '+' : '-'); } cout << nl; } } int main(){ int t; cin >> t; while(t--){ cin >> n >> m; output(n, m); } } /* 1 2 3 4 5 6 2 3 4 1 5 6 4 1 5 2 3 6 4 5 +++-- +++-- +++-- +++-- 4 6 --++++ -- ------ ------ 4 + 2 +++++ +++++ ----- ----- ----- 5 + 2 7 -+-++ -+-++ -+-++ --+++ +--++ +-+++ +-+++ 4 + 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...