Submission #150974

#TimeUsernameProblemLanguageResultExecution timeMemory
150974leathermanRed-blue table (IZhO19_stones)C++14
100 / 100
117 ms5356 KiB
#include<bits/stdc++.h> #include<ext/pb_ds/assoc_container.hpp> #include<ext/pb_ds/tree_policy.hpp> #pragma GCC optimize("-O3") #pragma GCC optimize("Ofast") #pragma GCC optimize("unroll-loops") #define ll int #define ld long double #define endl "\n" #define fi first #define se second #define y1 sadjfskldf #define PB push_back #define sqr(x) ((x) * (x)) #define all(x) x.begin(), x.end() using namespace std; using namespace __gnu_pbds; mt19937_64 rnd(chrono::system_clock::now().time_since_epoch().count()); const ll N = 1005; template <typename T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; ll Q,n,m,ans,kol,edd,a[N][N]; set<pair<ll, ll> > s; set<pair<ll, ll> > :: iterator it; vector<pair<ll, ll> > v; int main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>Q; while(Q--) { cin>>n>>m; s.clear(); if(n > m) { for(int i = 1; i <= n; i++) for(int j = 1; j <= m; j++) a[i][j] = 1; for(int i = 1; i <= n; i++) s.insert({m, i}); ans = n; for(int i = 1; i <= m; i++) { edd = 0; kol = n / 2 + 1; v.clear(); for(it = --s.end(); ; --it) { if((*it).fi == m / 2 + 1) { edd = 1; break; } v.PB(*it); if(--kol == 0) break; if(it == s.begin()) break; } if(edd) break; for(auto j : v) { s.erase(s.find({j.fi, j.se})); s.insert({j.fi - 1, j.se}); a[j.se][i] = 0; } ans++; } } else { for(int i = 1; i <= n; i++) for(int j = 1; j <= m; j++) a[i][j] = 0; for(int j = 1; j <= m; j++) s.insert({n, j}); ans = m; for(int i = 1; i <= n; i++) { edd = 0; kol = m / 2 + 1; v.clear(); for(it = --s.end(); ; --it) { if((*it).fi == n / 2 + 1) { edd = 1; break; } v.PB(*it); if(--kol == 0) break; if(it == s.begin()) break; } if(edd) break; for(auto j : v) { s.erase(s.find({j.fi, j.se})); s.insert({j.fi - 1, j.se}); a[i][j.se] = 1; } ans++; } } cout<<ans<<endl; for(int i = 1; i <= n; i++) { for(int j = 1; j <= m; j++) cout<<(a[i][j] ? '+' : '-'); cout<<endl; } } return 0; }
#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...