Submission #672432

#TimeUsernameProblemLanguageResultExecution timeMemory
672432Alihan_8Red-blue table (IZhO19_stones)C++17
100 / 100
86 ms3296 KiB
#include <bits/stdc++.h> // include <ext/pb_ds/assoc_container.hpp> // include <ext/pb_ds/tree_policy.hpp> // using namespace __gnu_pbds; using namespace std; #define all(x) x.begin(), x.end() #define pb push_back // define ordered_set tree<int,null_type,less_equal<int>,rb_tree_tag,tree_order_statistics_node_update> #define mpr make_pair #define ln '\n' void IO(string name){freopen((name+".in").c_str(),"r",stdin); freopen((name+".out").c_str(),"w",stdout);} #define int long long void solve(){ int n, m; cin >> n >> m; bool rev = false; if ( n > m ){ swap(n, m); rev = true; } vector <vector<char>> p(n, vector <char> (m, '-')); set <pair<int,int>> st; for ( int i = 0; i < m; i++ ) st.insert({0, i}); vector <int> cnt(m, (n+1)/2-1); for ( int i = 0; i < n; i++ ){ int Mx = m/2+1; while ( Mx and !st.empty() ){ auto it = st.begin(); st.erase(st.begin()); if ( !cnt[it->second] ) continue; cnt[it->second]--; Mx--; p[i][it->second] = '+'; st.insert({it->first+1, it->second}); } } if ( rev ){ vector <vector<char>> P(m, vector <char> (n)); for ( int i = 0; i < n; i++ ){ for ( int j = m-1; j >= 0; j-- ){ if ( p[i][j] == '+' ) P[m-1-j][i] = '-'; else P[m-1-j][i] = '+'; } } swap(n, m); p = P; } int score = 0; for ( int i = 0; i < n; i++ ){ int l = 0, r = 0; for ( auto j: p[i] ){ if ( j == '+' ) l++; else r++; } score += l > r; } for ( int i = 0; i < m; i++ ){ int l = 0, r = 0; for ( int j = 0; j < n; j++ ){ if ( p[j][i] == '+' ) l++; else r++; } score += r > l; } cout << score << ln; for ( auto i: p ){ for ( auto j: i ) cout << j; cout << ln; } } signed main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int T; cin >> T; while ( T-- ){ solve(); } cout << '\n'; }

Compilation message (stderr)

stones.cpp: In function 'void IO(std::string)':
stones.cpp:11:29: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   11 | void IO(string name){freopen((name+".in").c_str(),"r",stdin); freopen((name+".out").c_str(),"w",stdout);}
      |                      ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stones.cpp:11:70: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   11 | void IO(string name){freopen((name+".in").c_str(),"r",stdin); freopen((name+".out").c_str(),"w",stdout);}
      |                                                               ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...