Submission #402686

#TimeUsernameProblemLanguageResultExecution timeMemory
402686keta_tsimakuridzeRed-blue table (IZhO19_stones)C++14
17 / 100
316 ms1480 KiB
#include<bits/stdc++.h> #define f first //#define int long long #define s second #define pii pair<int,int> using namespace std; const int N=1e3+5,mod=1e9+7; int t,n,m,red[N]; char a[N][N]; set<pii> s; main(){ // t=1; cin >> t; while(t--){ cin>>n>>m; for(int i=1;i<=m;i++) red[i] = 0; int B = m; int ans = B,cnt=0; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++) a[i][j]='-'; } for(int i=1;i<=n;i++){ s.clear(); int c = 0,all = (i-1)*(m/2+1); for(int j=1;j<=m;j++) { if(red[j] >= (n+1)/2) c++; } int C=m-c; for(int j=1;j<=m;j++) { if(c) { red[j] = min(all,i-1); all-=min(all,i-1); c--; } else { red[j] = all/C; if(all%C) { int x = min(all%C,(n+1)/2-red[j]-1); red[j]+=x,all-=x;} } s.insert({red[j],j}); } for(int j=1;j<=m/2+1;j++) { pii c = *--s.end(); if(c.f>=(n+1)/2) red[c.s]++,s.erase(c); else { pii c = *s.begin(); s.erase(c); if(c.f+1==(n+1)/2) B--; red[c.s]++; } } if(i+B>ans) ans=i+B,cnt=i; } cout<<ans<<endl; s.clear(); for(int i=1;i<=m;i++) red[i] = 0; for(int i=1;i<=cnt;i++){ s.clear(); int c = 0,all = (i-1)*(m/2+1); for(int j=1;j<=m;j++) { if(red[j] >= (n+1)/2) c++; } int C=m-c; for(int j=1;j<=m;j++) { if(c) { red[j] = min(all,i-1); all-=min(all,i-1); c--; } else { red[j] = all/C; if(all%C) { int x = min(all%C,(n+1)/2-red[j]-1); red[j]+=x,all-=x;} } s.insert({red[j],j}); } for(int j=1;j<=m/2+1;j++) { pii c = *--s.end(); if(c.f>=(n+1)/2) red[c.s]++,a[i][c.s] = '+',s.erase(c); else { pii c = *s.begin(); s.erase(c); a[i][c.s] = '+'; red[c.s]++; } } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++) cout<<a[i][j]; cout<<endl; } } }

Compilation message (stderr)

stones.cpp:11:2: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   11 |  main(){
      |  ^~~~
stones.cpp: In function 'int main()':
stones.cpp:46:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   46 |     if(c.f+1==(n+1)/2) B--; red[c.s]++; }
      |     ^~
stones.cpp:46:29: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   46 |     if(c.f+1==(n+1)/2) B--; red[c.s]++; }
      |                             ^~~
#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...