답안 #501501

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
501501 2022-01-03T14:10:56 Z DragonO_o Red-blue table (IZhO19_stones) C++14
15 / 100
63 ms 1860 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;
        cout<<max(n,m)+(min(n,m)-1)/2*max(n,m)/((max(n,m)+2)/2)<<"\n";
        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[i][j]='-';
                        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 Incorrect 0 ms 204 KB in the table A+B is not equal to 5
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 332 KB in the table A+B is not equal to 5
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Incorrect 0 ms 204 KB in the table A+B is not equal to 5
# 결과 실행 시간 메모리 Grader output
1 Incorrect 63 ms 1356 KB in the table A+B is not equal to 116
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 63 ms 1360 KB Output is correct
2 Correct 55 ms 1860 KB Output is correct
3 Correct 51 ms 1624 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Incorrect 0 ms 204 KB in the table A+B is not equal to 5