제출 #684033

#제출 시각아이디문제언어결과실행 시간메모리
684033dostigatorRed-blue table (IZhO19_stones)C++17
69 / 100
22 ms1364 KiB
//izho gold #include <bits/stdc++.h> using namespace std; #define all(a) a.begin(),a.end() #define pb push_back #define vt vector #define endl '\n' #define Y second #define X first typedef long long ll; typedef long double ld; const ll mod=1e9+7; const ll INF=1e18; const int inf=1e9; const int N=2e5+505; const int M=1e3+10; const int dx[]={0,0,1,-1}; const int dy[]={1,-1,0,0}; int n,m; void solve(){ cin>>n>>m; if(min(n,m)<=3){ if(n<=m){ if(n==1){ cout<<m<<endl; for(int i=1; i<=m; ++i)cout<<'-'; cout<<endl; return; }if(n==2){ cout<<m<<endl; for(int i=1; i<=m; ++i)cout<<'-'; cout<<endl; for(int i=1; i<=m; ++i)cout<<'-'; cout<<endl; return; }if(n==3){ cout<<m+1<<endl; for(int i=1; i<=m; ++i)cout<<'-'; cout<<endl; for(int i=1; i<=m; ++i)cout<<'+'; cout<<endl; for(int i=1; i<=m; ++i)cout<<'-'; cout<<endl; return; } }else{ if(m==1){ cout<<n<<endl; for(int i=1; i<=n; ++i)cout<<"+\n"; return; }if(m==2){ cout<<n<<endl; for(int i=1; i<=n; ++i)cout<<"++\n"; return; }if(m==3){ cout<<n+1<<endl; for(int i=1; i<=n; ++i)cout<<"+-+\n"; return; } } }if(min(n,m)<=5){ char matrix[n+1][m+1]; for(int i=1; i<=n; ++i)for(int j=1; j<=m; ++j)matrix[i][j]='-'; if(n<m){ if(n==4){ for(int i=1; i<=n; ++i)for(int j=1; j<=m; ++j){ if(i==3)matrix[i][j]='+'; }cout<<m+1<<endl; for(int i=1; i<=n; ++i)for(int j=1; j<=m; ++j){ cout<<matrix[i][j]; if(j==m)cout<<endl; }return; } cout<<n-2+m<<endl; for(int i=1; i<=n; ++i){ for(int j=1; j<=m; ++j){ if(i<=2)matrix[i][j]='-'; else{ if(n==5 && j%3==1 && i!=3) matrix[i][j]='+'; if(n==5 && j%3==2 && i!=5) matrix[i][j]='+'; if(n==5 && j%3==0 && i!=4) matrix[i][j]='+'; if(n==4 && j%2 && i==4)matrix[i][j]='+'; if(n==4 && j%2==0 && i==3)matrix[i][j]='+'; } } } }else{ if(m==4) { cout<<n+1<<endl; for(int i=1; i<=n; ++i)for(int j=1; j<=m; ++j){ if(j==1 || j==m || j==3)matrix[i][j]='+'; }for(int i=1; i<=n; ++i)for(int j=1; j<=m; ++j){ cout<<matrix[i][j]; if(j==m)cout<<endl; }return; } cout<<m-2+n<<endl; for(int i=1; i<=n; ++i){ for(int j=1; j<=m; ++j){ if(j<=2)matrix[i][j]='+'; else { if(m==5 && i%3==1 && j==3)matrix[i][j]='+'; if(m==5 && i%3==2 && j==4)matrix[i][j]='+'; if(m==5 && i%3==0 && j==5)matrix[i][j]='+'; // if(m==4 && i%2 && j==4) matrix[i][j]='+'; // if(m==4 && i%2==0 && j==3) matrix[i][j]='+'; } } } }for(int i=1; i<=n; ++i){ for(int j=1; j<=m; ++j){ cout<<matrix[i][j]; }cout<<endl; }return; } if(n%2==m%2 && n%2==0){ char matrix[n+1][m+1]; if(n==6){ cout<<9<<endl; cout<<"++++--\n--++++\n++--++\n------\n------\n------\n"; return; } cout<<n+m-4<<endl; for(int i=1; i<=n; ++i)for(int j=1; j<=m; ++j)matrix[i][j]='-'; for(int i=2; i<n; ++i)for(int j=1; j<=m; ++j){ if(j==1 || j==m)matrix[i][j]='+'; else{ if((i+j)%2==0)matrix[i][j]='+'; } }for(int i=1; i<=n; ++i)for(int j=1; j<=m; ++j){ cout<<matrix[i][j]; if(j==m)cout<<endl; }return; } if(n%2==m%2 && n%2==1){ cout<<n+m-2<<endl; for(int i=1; i<n; ++i)for(int j=1; j<=m; ++j){ if(j==m){ cout<<'+'<<endl; continue; }if(i%2){ if(j%2)cout<<'-'; else cout<<'+'; }else{ if(j%2)cout<<'+'; else cout<<'-'; } } for(int i=1; i<=m; ++i){ cout<<'-'; }cout<<endl; return; } if(n*m<=36){ vt<pair<int,int>>lst; char matrix[20][20]; for(int mask=0; mask<(1<<(n*m)); ++mask){ int x=1,y=1; for(int i=0; i<n*m; ++i){ if(mask&(1<<i)){ matrix[x][y]='+'; }else matrix[x][y]='-'; ++y; if(y>m){ ++x; y=1; } } int cnt=0; for(int i=1; i<=n; ++i){ int heh=0; for(int j=1; j<=m; ++j)heh+=(matrix[i][j]=='+'); if(heh>m-heh)++cnt; }for(int j=1; j<=m; ++j){ int heh=0; for(int i=1; i<=n; ++i)heh+=(matrix[i][j]=='-'); if(heh>n-heh)++cnt; }lst.pb({cnt,mask}); }sort(all(lst)); int mask=lst.back().Y; cout<<lst.back().X<<endl; int x=1,y=1; for(int i=0; i<n*m; ++i){ if(mask&(1<<i)){ matrix[x][y]='+'; }else matrix[x][y]='-'; ++y; if(y>m){ ++x; y=1; } } for(int i=1; i<=n; ++i){ for(int j=1; j<=m; ++j){ cout<<matrix[i][j]; }cout<<endl; }return; } } int main(){ //srand(time(0)); //freopen("hotel.in","r",stdin); //freopen("hotel.out","w",stdout); ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int tt=1,lolol=0; cin>>tt; while(tt--) { //cout<<"Case "<<++lolol<<": "; solve(); } }

컴파일 시 표준 에러 (stderr) 메시지

stones.cpp: In function 'int main()':
stones.cpp:210:11: warning: unused variable 'lolol' [-Wunused-variable]
  210 |  int tt=1,lolol=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...