Submission #501531

# Submission time Handle Problem Language Result Execution time Memory
501531 2022-01-03T19:47:46 Z DragonO_o Red-blue table (IZhO19_stones) C++14
100 / 100
72 ms 2344 KB
#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

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 time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 3 ms 316 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 61 ms 1412 KB Output is correct
2 Correct 61 ms 1968 KB Output is correct
3 Correct 58 ms 2156 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 59 ms 1428 KB Output is correct
2 Correct 56 ms 1856 KB Output is correct
3 Correct 49 ms 1624 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 3 ms 316 KB Output is correct
5 Correct 61 ms 1412 KB Output is correct
6 Correct 61 ms 1968 KB Output is correct
7 Correct 58 ms 2156 KB Output is correct
8 Correct 59 ms 1428 KB Output is correct
9 Correct 56 ms 1856 KB Output is correct
10 Correct 49 ms 1624 KB Output is correct
11 Correct 13 ms 492 KB Output is correct
12 Correct 54 ms 1860 KB Output is correct
13 Correct 57 ms 2092 KB Output is correct
14 Correct 52 ms 1684 KB Output is correct
15 Correct 72 ms 2344 KB Output is correct
16 Correct 47 ms 1844 KB Output is correct
17 Correct 23 ms 1328 KB Output is correct