Submission #219422

#TimeUsernameProblemLanguageResultExecution timeMemory
219422NONAMESkandi (COCI20_skandi)C++17
18 / 110
7 ms512 KiB
#include <bits/stdc++.h> #include <time.h> //#include <random> //#ifndef _LOCAL //#pragma GCC optimize("-O3") //#pragma GCC optimize("Ofast") //#pragma GCC optimize("unroll-loops") //#endif #define sz(x) int(x.size()) #define in(x) freopen(x, "r", stdin) #define out(x) freopen(x, "w", stdout) #define N 2 * 100500 #define oo ll(1e16) #define pii pair <int, int> #define pll pair <ll, ll> #define ft first #define sd second #define pb push_back #define ppb pop_back #define mp make_pair #define el '\n' #define elf endl #define base ll(1e9 + 7) #define re return #define nins 4294967295 using namespace std; typedef long long ll; typedef long double ld; //mt19937 rnd(0); int n, m; vector <pair <int, pii> > v; char c[100][100]; bool mk[100][100]; bool ok(ll msk) { for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) mk[i][j] = (c[i][j] == '1'); for (ll i = 0; i < sz(v); i++) { if (!(msk & (1 << i))) continue; int x = v[i].sd.ft, y = v[i].sd.sd; if (v[i].ft == 2) { while (y < m && c[x][y] != '1') mk[x][y++] = 1; } else { while (x < n && c[x][y] != '1') mk[x++][y] = 1; } } for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) if (!mk[i][j]) return 0; return 1; } void solve() { cin >> n >> m; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) cin >> c[i][j]; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) { if (c[i][j] == '1') continue; bool gd = ((i - 1 < 0) || (c[i - 1][j] == '1')); if (gd) v.pb({1, {i, j}}); gd = ((j - 1 < 0) || (c[i][j - 1] == '1')); if (gd) v.pb({2, {i, j}}); } ll ans = sz(v), p = -1; for (ll i = 1; i < (1ll << ll(sz(v))); i++) if (ok(i)) { if (__builtin_popcount(i) < ans) { ans = __builtin_popcount(i); p = i; } } cout << ans << el; for (ll i = 0; i < sz(v); i++) { if (!(p & (1ll << i))) continue; if (v[i].ft == 2) cout << v[i].sd.ft + 1 << ' ' << v[i].sd.sd << " DESNO"; else cout << v[i].sd.ft << ' ' << v[i].sd.sd + 1 << " DOLJE"; cout << el; } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); #ifdef _LOCAL in("input.txt"); int t = 1; // cin >> t; for (int i = 1; i <= t; i++) { cout << "Test #" << i << elf; clock_t start_time = clock(); solve(); cerr.precision(4); cerr << fixed; cerr << elf; cerr << "Time :: " << ld(clock() - start_time) / CLOCKS_PER_SEC << elf; cout << elf; } #else int t = 1; // cin >> t; while (t--) { solve(); cout << el; } #endif }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...