Submission #402683

#TimeUsernameProblemLanguageResultExecution timeMemory
402683keta_tsimakuridzeRed-blue table (IZhO19_stones)C++14
32 / 100
301 ms1768 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)all--, red[j]++; } 
				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)all--, red[j]++; } 
				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:44:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   44 |     if(c.f+1==(n+1)/2) B--; red[c.s]++; }
      |     ^~
stones.cpp:44:29: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   44 |     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...