Submission #501531

#TimeUsernameProblemLanguageResultExecution timeMemory
501531DragonO_oRed-blue table (IZhO19_stones)C++14
100 / 100
72 ms2344 KiB
#include <bits/stdc++.h>

using namespace std;

#define x first
#define y second
#define pb push_back
#define all(a) a.begin(),a.end()
#define int long long

typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
typedef pair<int,int>pi;
typedef pair<ll,ll>pll;
typedef vector<ll>vll;
typedef vector<int>vi;
typedef vector<bool>vb;
typedef vector<vi>vvi;
typedef vector<vll>vvll;
typedef vector<pi>vpi;
typedef vector<pll>vpll;

const int N=1e3+99;

char a[N][N];

signed main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int tt;
    cin>>tt;
    while(tt--){
        int n,m;
        cin>>n>>m;
        for(int i=1;i<=n;++i){
            for(int j=1;j<=m;++j){
                a[i][j]='$';
            }
        }
        multiset<pi>st;
        if(n<=m){
            for(int i=1;i<=m;++i){
                st.insert({0,i});
            }
            int cnt=0;
            for(int i=1;i<=n;++i){
                int cur=0;
                bool ok=1;
                while(cur<(m+2)/2){
                    auto [c,j]=*st.begin();
                    if(c>=(n-1)/2){
                        ok=false;
                        break;
                    }
                    else{
                        st.erase(st.begin());
                        st.insert({++c,j});
                        a[i][j]='+';
                        cur++;
                    }
                }
                if(ok){
                    cnt++;
                }
            }
            cout<<m+cnt<<"\n";
            for(int i=1;i<=n;++i){
                for(int j=1;j<=m;++j){
                    if(a[i][j]=='+'){
                        cout<<'+';
                    }
                    else{
                        cout<<'-';
                    }
                }
                cout<<"\n";
            }
        }
        else{
            for(int i=1;i<=n;++i){
                st.insert({0,i});
            }
            int cnt=0;
            for(int i=1;i<=m;++i){
                int cur=0;
                bool ok=1;
                while(cur<(n+2)/2){
                    auto [c,j]=*st.begin();
                    if(c>=(m-1)/2){
                        ok=false;
                        break;
                    }
                    else{
                        st.erase(st.begin());
                        st.insert({++c,j});
                        a[j][i]='-';
                        cur++;
                    }
                }
                if(ok){
                    cnt++;
                }
            }
            cout<<n+cnt<<"\n";
            for(int i=1;i<=n;++i){
                for(int j=1;j<=m;++j){
                    if(a[i][j]=='-'){
                        cout<<'-';
                    }
                    else{
                        cout<<'+';
                    }
                }
                cout<<"\n";
            }
        }
    }
}

Compilation message (stderr)

stones.cpp: In function 'int main()':
stones.cpp:52:26: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   52 |                     auto [c,j]=*st.begin();
      |                          ^
stones.cpp:90:26: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   90 |                     auto [c,j]=*st.begin();
      |                          ^
#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...