Submission #333654

#TimeUsernameProblemLanguageResultExecution timeMemory
333654vipghn2003Red-blue table (IZhO19_stones)C++14
53 / 100
105 ms2156 KiB
#include<bits/stdc++.h> #define pii pair<int,int> #define fi first #define se second #define mp make_pair using namespace std; const int N=1005; int n,m; char ans[N][N]; void solve() { int res=0; int del=0; for(int row_del=0;row_del<=n;row_del++) { int can=(m-1)/2; int need=max(0,n-(n-1)/2-row_del); if(need==0) { if(res<m+n-row_del) { res=m+n-row_del; del=row_del; } continue; } if(res<n-row_del+min(m,((n-row_del)/need)*can)) { res=n-row_del+min(m,((n-row_del)/need)*can); del=row_del; } } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) ans[i][j]='+'; } for(int i=n-del+1;i<=n;i++) { for(int j=1;j<=m;j++) ans[i][j]='-'; } set<pii>cur; cur.clear(); for(int j=1;j<=m;j++) if(del<=n-del) cur.insert(mp(del,j)); for(int i=1;i<=n-del;i++) { vector<pii>u; int can=(m-1)/2; while(!cur.empty()&&can) { can--; auto x=*cur.rbegin(); cur.erase(x); int col=x.se; ans[i][col]='-'; if(x.fi+1>(n-x.fi-1)) continue; u.push_back(mp(x.fi+1,x.se)); } for(auto&x:u) cur.insert(x); } cout<<res<<'\n'; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) cout<<ans[i][j]; cout<<'\n'; } } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int t; cin>>t; while(t--) { cin>>n>>m; 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...