Submission #333620

#TimeUsernameProblemLanguageResultExecution timeMemory
333620vipghn2003Red-blue table (IZhO19_stones)C++14
27 / 100
539 ms3436 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 ans1[N][N],ans2[N][N]; void solve() { int res1=n; set<pii>cur; for(int j=1;j<=m;j++) cur.insert(mp(0,j)); for(int i=1;i<=n;i++) { vector<pii>del; for(int j=1;j<=m;j++) ans1[i][j]='+'; int can=(m-1)/2; while(!cur.empty()&&can) { can--; auto x=*cur.rbegin(); cur.erase(x); int col=x.se; ans1[i][col]='-'; if(x.fi+1>(n-x.fi-1)) { res1++; } else del.push_back(mp(x.fi+1,x.se)); } for(auto&x:del) cur.insert(x); } cur.clear(); int res2=m; for(int i=1;i<=n;i++) cur.insert(mp(0,i)); for(int j=1;j<=m;j++) { vector<pii>del; for(int i=1;i<=n;i++) ans2[i][j]='-'; int can=(n-1)/2; while(!cur.empty()&&can) { can--; auto x=*cur.rbegin(); cur.erase(x); int row=x.se; ans2[row][j]='+'; if(x.fi+1>(m-x.fi-1)) { res2++; } else del.push_back(mp(x.fi+1,x.se)); } for(auto&x:del) cur.insert(x); } if(res1<res2) { swap(res1,res2); swap(ans1,ans2); } cout<<res1<<'\n'; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) cout<<ans1[i][j]; cout<<'\n'; } int ck=0; for(int i=1;i<=n;i++) { int r=0,b=0; for(int j=1;j<=m;j++) { if(ans1[i][j]=='+') r++; else b++; } ck+=(r>b); } for(int j=1;j<=m;j++) { int r=0,b=0; for(int i=1;i<=n;i++) { if(ans1[i][j]=='+') r++; else b++; } ck+=(b>r); } assert(ck==res1); } 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...