Submission #1156429

#TimeUsernameProblemLanguageResultExecution timeMemory
1156429Muhammad_AneeqRed-blue table (IZhO19_stones)C++20
27 / 100
163 ms1492 KiB
/* بسم الله الرحمن الرحيم Author: (:Muhammad Aneeq:) */ #include <iostream> #include <queue> #include <vector> #include <algorithm> #warning check the output using namespace std; int const N=1010; char ans[N][N]={}; int n,m; int check() { int a=0; for (int i=0;i<m;i++) { int z=0; for (int j=0;j<n;j++) z+=(ans[j][i]=='-'); if (z>n-z) a++; } for (int i=0;i<n;i++) { int z=0; for (int j=0;j<m;j++) z+=(ans[i][j]=='+'); a+=(z>m-z); } return a; } void print() { cout<<check()<<endl; for (int i=0;i<n;i++) { for (int j=0;j<m;j++) cout<<ans[i][j]; cout<<endl; } } inline void solve() { cin>>n>>m; for (int i=0;i<n;i++) for (int j=0;j<m;j++) ans[i][j]=' '; if (m>n) { priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>pq,qp; for (int i=0;i<n;i++) pq.push({0,i}); for (int i=0;i<m;i++) { vector<pair<int,int>>ind; for (int j=0;j<n/2+1;j++) { if (qp.size()) { ind.push_back(qp.top()); qp.pop(); continue; } ind.push_back(pq.top()); pq.pop(); } for (auto [k,j]:ind) { ans[j][i]='-'; if (k+1>=(m+1)/2) qp.push({k+1,j}); else pq.push({k+1,j}); } } for (int i=0;i<n;i++) for (int j=0;j<m;j++) if (ans[i][j]!='-') ans[i][j]='+'; char pr[n][m]; for (int i=0;i<n;i++) for (int j=0;j<m;j++) pr[i][j]=ans[i][j]; vector<pair<int,int>>v; v.push_back({check(),m}); for (int j=m-1;j>=0;j--) { for(int i=0;i<n;i++) ans[i][j]='+'; v.push_back({check(),j}); } sort(begin(v),end(v)); for (int i=0;i<n;i++) for (int j=0;j<m;j++) ans[i][j]=pr[i][j]; for (int j=v.back().first;j<m;j++) { for (int i=0;i<n;i++) ans[i][j]='+'; } print(); } else { priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>pq,qp; for (int i=0;i<m;i++) pq.push({0,i}); for (int i=0;i<n;i++) { vector<pair<int,int>>ind; for (int j=0;j<m/2+1;j++) { if (qp.size()) { ind.push_back(qp.top()); qp.pop(); continue; } ind.push_back(pq.top()); pq.pop(); } for (auto [k,j]:ind) { ans[i][j]='+'; if (k+1>=(n+1)/2) qp.push({k+1,j}); else pq.push({k+1,j}); } } for (int i=0;i<n;i++) for (int j=0;j<m;j++) if (ans[i][j]!='+') ans[i][j]='-'; char pr[n][m]={}; for (int i=0;i<n;i++) for (int j=0;j<m;j++) pr[i][j]=ans[i][j]; vector<pair<int,int>>v; v.push_back({check(),n}); for (int j=n-1;j>=0;j--) { for(int i=0;i<m;i++) ans[j][i]='-'; v.push_back({check(),j}); } sort(begin(v),end(v)); for (int i=0;i<n;i++) for (int j=0;j<m;j++) ans[i][j]=pr[i][j]; for (int j=v.back().first;j<n;j++) { for (int i=0;i<m;i++) ans[j][i]='-'; } print(); } } int main() { ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); int t=1; cin>>t; for (int i=1;i<=t;i++) { solve(); } }

Compilation message (stderr)

stones.cpp:11:2: warning: #warning check the output [-Wcpp]
   11 | #warning check the output
      |  ^~~~~~~
#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...