Submission #219410

#TimeUsernameProblemLanguageResultExecution timeMemory
219410kartelSkandi (COCI20_skandi)C++14
18 / 110
10032 ms768 KiB
#include <bits/stdc++.h> //#include <ext/pb_ds/assoc_container.hpp> //#include <ext/pb_ds/tree_policy.hpp> #define in(x) freopen(x, "r", stdin) #define out(x) freopen(x, "w", stdout) //#pragma GCC optimize("Ofast") //#pragma GCC optimize("unroll-loops") //#pragma GCC optimize("-O3") #define F first #define S second #define pb push_back #define N +400500 //#define M ll(1e9 + 7) #define sz(x) (int)x.size() #define re return #define oo ll(1e18) #define el '\n' using namespace std; //using namespace __gnu_pbds; //typedef tree <int, null_type, less_equal <int> , rb_tree_tag, tree_order_statistics_node_update> ordered_set; typedef long long ll; typedef long double ld; int n, m, i, j, k, mask, I, mrk[N]; char c[501][501], c1[501][501]; vector <pair <int, pair <int, int> > > ans; vector <pair <int, int> > v; int main() { srand(time(0)); ios_base::sync_with_stdio(0); iostream::sync_with_stdio(0); ios::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); // in("qual.in"); // out("qual.out"); cin >> n >> m; for (i = 1; i <= n; i++) for (j = 1; j <= m; j++) { cin >> c[i][j]; if (c[i][j] == '1') v.pb({i, j}), ans.pb({i, {j + 1, 1}}); } k = v.size(); for (mask = 0; mask < (1 << k); mask++) { for (i = 1; i <= n; i++) for (j = 1; j <= m; j++) c1[i][j] = c[i][j]; for (i = 0; i < k; i++) if (mask & (1 << i)) { I = v[i].F; j = v[i].S + 1; while (j <= m && c1[I][j] == '0') c1[I][j]++, j++; } else { I = v[i].F + 1; j = v[i].S; while (I <= n && c1[I][j] == '0') c1[I][j]++, I++; } int kol = 0; for (i = 1; i <= n; i++) for (j = 1; j <= m; j++) kol += min(1, (c1[i][j] - '0')); if (kol == n * m) { int kl = k; for (i = 0; i < k; i++) mrk[i] = 0; for (i = 0; i < k; i++) if (mask & (1 << i)) { I = v[i].F; j = v[i].S + 1; while (j <= m && c1[I][j] > '1' && c[I][j] == '0') j++; if (j > m || c[I][j] == '1') { kl--; mrk[i] = 1; I = v[i].F; j = v[i].S + 1; while (j <= m && c1[I][j] > '1' && c[I][j] == '0') c1[I][j]--, j++; } } else { I = v[i].F + 1; j = v[i].S; while (I <= n && c1[I][j] > '1' && c[I][j] == '0') I++; if (I > n || c[I][j] == '1') { kl--; mrk[i] = 1; I = v[i].F + 1; j = v[i].S; while (I <= n && c1[I][j] > '1' && c[I][j] == '0') c1[I][j]--, I++; } } if (kl < ans.size()) { ans.clear(); for (i = 0; i < k; i++) if (!mrk[i]) { if (mask & (1 << i)) ans.pb({v[i].F, {v[i].S, 1}}); else ans.pb({v[i].F, {v[i].S, 0}}); } } } } cout << ans.size() << el; for (auto it : ans) cout << it.F << " " << it.S.F << " " << ((it.S.S == 1) ? "DESNO" : "DOLJE") << el; }

Compilation message (stderr)

skandi.cpp: In function 'int main()':
skandi.cpp:100:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             if (kl < ans.size())
                 ~~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...