제출 #549297

#제출 시각아이디문제언어결과실행 시간메모리
549297krit3379Red-blue table (IZhO19_stones)C++17
42 / 100
97 ms3892 KiB
#include<bits/stdc++.h> using namespace std; #define N 1005 int board[N][N],cnt[N]; priority_queue<pair<int,int>> q,t,tt; void sol(){ int n,m,nn,mm,ma,ans,a,i,j,cou; scanf("%d %d",&n,&m); nn=n/2+1; mm=m/2+1; ans=0,ma=a=n; for(i=1;i<=n;i++){ for(j=1;j<=m;j++)board[i][j]=0; cnt[i]=m; } for(i=1;i<=m;i++){ for(j=1;j<=n;j++){ if(cnt[j]>mm)q.push({cnt[j],j}); else if(cnt[j]==mm)tt.push({cnt[j],j}); else t.push({cnt[j],j}); } cou=nn; while(!t.empty()&&cou>0){ auto [x,y]=t.top(); t.pop(); cnt[y]--; board[y][i]=1; cou--; } while(!q.empty()&&cou>0){ auto [x,y]=q.top(); q.pop(); if(--cnt[y]<mm)a--; board[y][i]=1; cou--; } while(!tt.empty()&&cou>0){ auto [x,y]=tt.top(); tt.pop(); cnt[y]--; a--; board[y][i]=1; cou--; } if(a+i>ma)ma=a+i,ans=i; while(!t.empty())t.pop(); while(!tt.empty())tt.pop(); while(!q.empty())q.pop(); } printf("%d\n",ma); for(i=1;i<=n;i++){ for(j=1;j<=m;j++){ if(j<=ans)printf("%c",board[i][j]?'-':'+'); else printf("+"); } printf("\n"); } } int main(){ int t; scanf("%d",&t); while(t--)sol(); return 0; }

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

stones.cpp: In function 'void sol()':
stones.cpp:10:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   10 |     scanf("%d %d",&n,&m);
      |     ~~~~~^~~~~~~~~~~~~~~
stones.cpp: In function 'int main()':
stones.cpp:64:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   64 |     scanf("%d",&t);
      |     ~~~~~^~~~~~~~~
#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...