Submission #672423

# Submission time Handle Problem Language Result Execution time Memory
672423 2022-12-16T03:48:09 Z Alihan_8 Red-blue table (IZhO19_stones) C++17
17 / 100
2000 ms 468 KB
#include <bits/stdc++.h>
// include <ext/pb_ds/assoc_container.hpp>
// include <ext/pb_ds/tree_policy.hpp>
// using namespace __gnu_pbds;
using namespace std;
#define all(x) x.begin(), x.end()
#define pb push_back
// define ordered_set tree<int,null_type,less_equal<int>,rb_tree_tag,tree_order_statistics_node_update>
#define mpr make_pair
#define ln '\n'
void IO(string name){freopen((name+".in").c_str(),"r",stdin); freopen((name+".out").c_str(),"w",stdout);}
#define int long long
signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int T; cin >> T;
    while ( T-- ){
        int n, m; cin >> n >> m;
        int Mx = 0;
        vector <char> p, res;
        function <void(int)> dfs = [&](int pos){
            if ( pos == n*m ){
                int cnt = 0, score = 0;
                for ( int i = 0; i < n*m; i++ ){
                    cnt += p[i] == '+';
                    if ( (i+1)%m == 0 ){
                        score += cnt > m-cnt;
                        cnt = 0;
                    }
                }
                for ( int i = 0; i < m; i++ ){
                    cnt = 0;
                    for ( int j = i; j < n*m; j += m ) cnt += p[j] == '-';
                    score += cnt > n-cnt;
                }
                if ( score > Mx ){
                    Mx = score;
                    res = p;
                }
                return;
            }
            p.pb('-'); dfs(pos+1);
            p.pop_back();
            p.pb('+'); dfs(pos+1);
            p.pop_back();
        };
        dfs(0);
        cout << Mx << ln;
        for ( int i = 0; i < n*m; i++ ){
            cout << res[i];
            if ( (i+1)%m == 0 ) cout << ln;
        }
    }

    cout << '\n';
}

Compilation message

stones.cpp: In function 'void IO(std::string)':
stones.cpp:11:29: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   11 | void IO(string name){freopen((name+".in").c_str(),"r",stdin); freopen((name+".out").c_str(),"w",stdout);}
      |                      ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stones.cpp:11:70: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   11 | void IO(string name){freopen((name+".in").c_str(),"r",stdin); freopen((name+".out").c_str(),"w",stdout);}
      |                                                               ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 336 KB Output is correct
2 Correct 8 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 2084 ms 212 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 336 KB Output is correct
2 Correct 8 ms 212 KB Output is correct
3 Execution timed out 2084 ms 212 KB Time limit exceeded
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 2076 ms 468 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 2070 ms 340 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 336 KB Output is correct
2 Correct 8 ms 212 KB Output is correct
3 Execution timed out 2084 ms 212 KB Time limit exceeded
4 Halted 0 ms 0 KB -