Submission #521577

#TimeUsernameProblemLanguageResultExecution timeMemory
521577dostigatorRed-blue table (IZhO19_stones)C++17
27 / 100
40 ms1248 KiB
#pragma GCC optimize("O3") #pragma GCC target("popcnt") #include <bits/stdc++.h> using namespace std; #define IShowSpeed ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define popcnt __builtin_popcount #define all(a) a.begin(),a.end() #define pii pair<int,int> #define mii map<int,int> #define pll pair<ll,ll> #define mll map<ll,ll> #define pb push_back #define vt vector #define endl '\n' #define X first #define Y second typedef long double ld; typedef long long ll; const int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1},N=6e5; const ll mod=1e9+7,inf=1e18; int n,m; void solve(){ cin>>n>>m; if(max(n,m)<=4){ int all=n*m; vt<char>ans; int ans1=-1; for(int mask=0; mask<(1<<all); ++mask){ vt<char>var; int col[5]={0,0,0,0,0}; int row[5]={0,0,0,0,0},cnt=0; for(int i=0; i<all; ++i){ if((mask>>i)&1) var.pb('+'); else var.pb('-'); } int h=0; for(int i=0; i<n; ++i)for(int j=0; j<m; ++j){ if(var[h]=='+'){row[i]++;} if(var[h]=='-'){col[j]++;} ++h; } for(int i=0; i<n; ++i) {if(row[i]>=(m/2)+1)++cnt;} for(int i=0; i<m; ++i) {if(col[i]>=(n/2)+1)++cnt;} if(ans1<cnt){ ans1=cnt; ans=var; } } int h=0; cout<<ans1<<endl; for(int i=0; i<n; ++i){ for(int j=0; j<m; ++j){ cout<<ans[h]; ++h; } cout<<endl; } return; } if(min(n,m)<=3){ if(n==1){ cout<<m<<endl; for(int i=1; i<=m; ++i)cout<<'-'; cout<<endl; return; } if(m==1){ cout<<n<<endl; for(int i=1; i<=n; ++i)cout<<'+'<<endl; return; } if(n==2){ cout<<m<<endl; for(int i=1; i<=n; ++i)for(int j=1; j<=m; ++j){ cout<<'-'; if(j==m)cout<<endl; } return; } if(m==2){ cout<<n<<endl; for(int i=1; i<=n; ++i)for(int j=1; j<=m; ++j){ cout<<'+'; if(j==m)cout<<endl; } return; } if(n==3){ cout<<m+1<<endl; for(int i=1; i<=n; ++i){ for(int j=1; j<=m; ++j){ if(i==2)cout<<'+'; else cout<<'-'; } cout<<endl; } return; } if(m==3){ cout<<n+1<<endl; for(int i=1; i<=n; ++i){ for(int j=1; j<=m; ++j){ if(j==2)cout<<'-'; else cout<<'+'; } cout<<endl; } return; } return; } if(n%2==m%2 && n%2 && n<=m){ cout<<m+n/2<<endl; for(int i=1; i<=n; ++i){ for(int j=1; j<=m;++j){ if(i%2) cout<<'-'; else cout<<'+'; } cout<<endl; } return; } if(n%2==m%2 && n%2 && n>m){ cout<<n+m/2<<endl; for(int i=1; i<=n; ++i){ for(int j=1; j<=m;++j){ if(j%2) cout<<'+'; else cout<<'-'; } cout<<endl; } return; } } int main() { IShowSpeed; int tt=1; cin>>tt; while(tt--) 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...