Submission #992947

#TimeUsernameProblemLanguageResultExecution timeMemory
992947vivkostovRed-blue table (IZhO19_stones)C++14
38 / 100
25 ms2164 KiB
#include<bits/stdc++.h> #define endl "\n" using namespace std; void speed() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); } struct cell { int br,in; }; bool cmp(cell a1,cell a2) { return a1.br<a2.br; } int t,n,m,h; char a1,a2; string s[1005]; cell a[1005]; void print(int br) { cout<<br<<endl; if(h) { for(int i=1; i<=m; i++) { for(int j=1; j<=n; j++) { cout<<s[j][i-1]; } cout<<endl; } return; } for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) { cout<<s[i][j-1]; } cout<<endl; } } void fil(int i) { for(int j=1;j<=m;j++)s[i]+=a1; } void prea2() { int gr=(((m-1)/2)*n)/(n/2+1); for(int i=m-gr+1;i<=m;i++) { a[i].in=i; } } void fila2(int i) { int gr=(((m-1)/2)*n)/(n/2+1); sort(a+m-gr+1,a+m+1,cmp); for(int j=1;j<=(m-1)/2;j++) { //cout<<a[m-gr+j].in<<" "; s[i][a[m-gr+j].in-1]=a2; a[m-gr+j].br++; } //cout<<endl; } void old() { int br=0; if(false); else { for(int i=1; i<=n; i++) { for(int j=1; j<=m/2+1; j++) { s[i]+=a1; } for(int j=m/2+2; j<=m; j++) { s[i]+=a2; } br++; } br+=(m-1)/2; } print(br); } void resheven() { prea2(); if(n<=3||m<=3) { old(); return; } int br=n+(((m-1)/2)*n)/(n/2+1),pos=m,gr=(((m-1)/2)*n)/(n/2+1); //cout<<(((m-1)/2)*n)/(n/2+1)<<" "<<br<<endl; for(int i=1;i<=n;i++) { fil(i); fila2(i); pos--; if(pos<=m-gr)pos=m; } print(br); } void resh() { int br=0; for(int i=1; i<=(n-1)/2; i++) { for(int j=1; j<=m/2+1; j++) { s[i]+=a1; } for(int j=m/2+2; j<=m; j++) { s[i]+=a2; } br++; } for(int i=(n-1)/2+1; i<=n-1; i++) { for(int j=1; j<=(m-1)/2; j++) { s[i]+=a2; } for(int j=(m-1)/2+1; j<=m; j++) { s[i]+=a1; } br++; } if(m>2) { for(int i=1; i<=m; i++) { s[n]+=a2; } br+=((m-1)/2)*2; } else { for(int i=1; i<=m; i++) { s[n]+=a1; } br++; } print(br); } void read() { cin>>t; for(int z=1; z<=t; z++) { cin>>n>>m; if(n<m) { swap(n,m); a1='-'; a2='+'; h=1; } else { a1='+'; a2='-'; } if(n%2==0)resheven(); else resh(); h=0; for(int i=1; i<=n; i++)s[i].clear(); } } int main() { speed(); read(); return 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...