#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
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 time |
Memory |
Grader output |
1 |
Correct |
1 ms |
204 KB |
Output is correct |
2 |
Correct |
2 ms |
300 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
10 ms |
376 KB |
in the table A+B is not equal to 17 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
204 KB |
Output is correct |
2 |
Correct |
2 ms |
300 KB |
Output is correct |
3 |
Incorrect |
10 ms |
376 KB |
in the table A+B is not equal to 17 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
316 ms |
1324 KB |
in the table A+B is not equal to 114 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
282 ms |
1480 KB |
in the table A+B is not equal to 44 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
204 KB |
Output is correct |
2 |
Correct |
2 ms |
300 KB |
Output is correct |
3 |
Incorrect |
10 ms |
376 KB |
in the table A+B is not equal to 17 |