답안 #501533

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
501533 2022-01-03T19:48:48 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]='$';
            }
        }
        cout<<max(n,m)+(min(n,m)-1)/2*max(n,m)/((max(n,m)+2)/2)<<"\n";
        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:53:26: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   53 |                     auto [c,j]=*st.begin();
      |                          ^
stones.cpp:91:26: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   91 |                     auto [c,j]=*st.begin();
      |                          ^
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 332 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 2 ms 332 KB Output is correct
4 Correct 3 ms 332 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 64 ms 1348 KB Output is correct
2 Correct 58 ms 1936 KB Output is correct
3 Correct 59 ms 2164 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 67 ms 1424 KB Output is correct
2 Correct 53 ms 1864 KB Output is correct
3 Correct 51 ms 1636 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 2 ms 332 KB Output is correct
4 Correct 3 ms 332 KB Output is correct
5 Correct 64 ms 1348 KB Output is correct
6 Correct 58 ms 1936 KB Output is correct
7 Correct 59 ms 2164 KB Output is correct
8 Correct 67 ms 1424 KB Output is correct
9 Correct 53 ms 1864 KB Output is correct
10 Correct 51 ms 1636 KB Output is correct
11 Correct 15 ms 564 KB Output is correct
12 Correct 67 ms 1980 KB Output is correct
13 Correct 72 ms 2124 KB Output is correct
14 Correct 40 ms 1712 KB Output is correct
15 Correct 66 ms 2344 KB Output is correct
16 Correct 68 ms 1876 KB Output is correct
17 Correct 22 ms 1348 KB Output is correct