Submission #845653

# Submission time Handle Problem Language Result Execution time Memory
845653 2023-09-06T14:43:21 Z vjudge1 Skandi (COCI20_skandi) C++17
0 / 110
2 ms 348 KB
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#include <bits/stdc++.h>
using namespace std;
#define int long long
 
const int INF = 1e9 + 7;

#ifndef ONLINE_JUDGE
    #define OPEN freopen(".in", "r", stdin); \
                 freopen(".out", "w", stdout);
#else
    #define OPEN void(23);
#endif


char arr[505][505];
int n, m;
bool check()
{
    bool ok = true;
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= m; j++) 
            ok &= (arr[i][j] != '0');

    return ok;
}

int ans = INF;
inline void f(int adim)
{
    /*
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= m; j++)
            cerr << arr[i][j] << " \n"[j == m];
    cerr << "\n";
    */
    if(check())
    {
        ans = min(ans, adim);
        return;
    }
    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= m; j++)
        {
            if(arr[i][j] == '1')
            {
                bool change = false;
                vector <pair <int, int>> vec;
                for(int k = j +1; k <= m; k++)
                {
                    if(arr[i][k] == '1') break;
                    change |= arr[i][k] == '0';
                    if(arr[i][k] == '0') vec.emplace_back(i, k);
                }
                if(change)
                {
                    for(auto &[a, b] : vec) arr[a][b] = '2';
                    f(adim +1);
                    for(auto &[a, b] : vec) arr[a][b] = '0';
                }

                change = false;
                vec.clear();
                for(int k = i +1; k <= n; k++)
                {
                    if(arr[k][j] == '1') break;
                    change |= arr[k][j] == '0';
                    if(arr[k][j] == '0') vec.emplace_back(k, j);
                }
                if(change)
                {
                    for(auto &[a, b] : vec) arr[a][b] = '2';
                    f(adim +1);
                    for(auto &[a, b] : vec) arr[a][b] = '0';
                }
            }
        }
    }
}

void solve()
{
    cin >> n >> m;
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= m; j++)
            cin >> arr[i][j];

    f(0);
    cout << ans;

    return;
}

int32_t main()
{
    OPEN;

    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);

    int t = 1; //cin >> t;
    while(t--)
    {
        solve();
    }
}

Compilation message

skandi.cpp: In function 'int32_t main()':
skandi.cpp:10:25: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   10 |     #define OPEN freopen(".in", "r", stdin); \
      |                  ~~~~~~~^~~~~~~~~~~~~~~~~~~
skandi.cpp:98:5: note: in expansion of macro 'OPEN'
   98 |     OPEN;
      |     ^~~~
skandi.cpp:11:25: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   11 |                  freopen(".out", "w", stdout);
      |                  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~
skandi.cpp:98:5: note: in expansion of macro 'OPEN'
   98 |     OPEN;
      |     ^~~~
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 344 KB Unexpected end of file - int32 expected
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 348 KB Unexpected end of file - int32 expected
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 344 KB Unexpected end of file - int32 expected
2 Halted 0 ms 0 KB -