Submission #499884

#TimeUsernameProblemLanguageResultExecution timeMemory
499884lukameladzeRed-blue table (IZhO19_stones)C++14
100 / 100
67 ms5168 KiB
# include <bits/stdc++.h> #define f first #define s second #define pb push_back using namespace std; const int N = 1005; int t,n,m,a[N][N],ans,rem,cur[N],canrow,val,val1,all; signed main() { cin>>t; while (t--) { cin>>n>>m; ans = max(n,m); for (int i = 1; i <= n; i++) { all = i*((m+2)/2); canrow = min(n - (n+2)/2, i); for (int j = 0; j < m; j++) { if ((m-j)*canrow >= all) { if (i + (m - j) > ans) { val = i; val1 = j; } ans = max(ans,i + (m - j)); } all -= i; } } cout<<ans<<endl; //cout<<val<<" "<<val1<<endl; if (ans == m) { for (int i = 1; i <= n; i++) { for (int j = 1; j <=m ;j++) { cout<<"-"; } cout<<"\n"; } continue; } if (ans == n) { for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { cout<<"+"; } cout<<"\n"; } continue; } for (int i = 1; i <= val; i++) { canrow = min(n-(n+2)/2,i); for (int j = 1; j <= val1; j++) { a[i][j] = 1; } rem = (m+2)/2-val1; // if (i == 1) cout<<rem<<endl; vector < pair <int, int > > v; v.clear(); for (int j = val1 + 1; j <= m; j++) { v.pb({cur[j],j}); } sort(v.begin(),v.end()); for (int j = 0; j < rem; j++) { a[i][v[j].s] = 1; cur[v[j].s]++; } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) {cur[j] = 0; if (a[i][j] == 1) cout<<"+"; else cout<<"-"; a[i][j] = 0; } cout<<"\n"; } } }
#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...