Submission #1297397

#TimeUsernameProblemLanguageResultExecution timeMemory
1297397huudaiSelotejp (COCI20_selotejp)C++20
110 / 110
47 ms48804 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define fi first #define se second #define pii pair<int, int> #define pll pair<ll,ll> #define mp make_pair #define pb push_back #define BIT(x,i) (((x)>>(i))&1) #define MASK(i) (1LL<<(i)) template<typename T1, typename T2> bool minimize(T1 &a, T2 b) {if(a>=b) a=b; else return 0; return 1;} template<typename T1, typename T2> bool maximize(T1 &a, T2 b) {if(a<b) a=b; else return 0; return 1;} #define file "task" const int maxn = 1e4 + 5; const int MOD = 1e9 + 7; const int oo = 1e9; const ll OO = 1e18; int n, m; int f[1005][12][MASK(10)]; int a[1005][12]; void input(){ cin >> n >> m; for(int i = 1; i <= n; i++){ string st; cin >> st; for(int j = 0; j < m; j++){ a[i][j + 1] = st[j] == '#'; // cout << i << " "<< j + 1 << " "<< a[i][j + 1] << " \n"[j == m - 1]; } } } void proc(){ memset(f, 0x3f, sizeof(f)); f[0][m][0] = 0; for(int i = 0; i <= n; i++){ for(int j = 0; j <= m; j++){ for(int mask = 0; mask < MASK(m); mask++){ if(f[i][j][mask] >= oo) continue; if(j == m) minimize(f[i + 1][0][mask], f[i][j][mask]); else { if(a[i][j + 1]){ if(BIT(mask, j)){ minimize(f[i][j + 1][mask], f[i][j][mask]); if(j >= 1 && a[i][j] && BIT(mask, j - 1) == 0){ minimize(f[i][j + 1][mask ^ MASK(j)], f[i][j][mask]); } else minimize(f[i][j + 1][mask ^ MASK(j)], f[i][j][mask] + 1); } else { minimize(f[i][j + 1][mask ^ MASK(j)], f[i][j][mask] + 1); if(j >= 1 && a[i][j] && BIT(mask, j - 1) == 0){ minimize(f[i][j + 1][mask], f[i][j][mask]); } else minimize(f[i][j + 1][mask], f[i][j][mask] + 1); } } else { if(BIT(mask, j)) minimize(f[i][j + 1][mask ^ MASK(j)], f[i][j][mask]); else minimize(f[i][j + 1][mask], f[i][j][mask]); } } } } } int ans = oo; for(int mask = 0; mask < MASK(m); mask++){ minimize(ans, f[n][m][mask]); } cout << ans << '\n'; } signed main(){ cin.tie(nullptr)->sync_with_stdio(0); cout.tie(nullptr); if(fopen(file".inp", "r")){ freopen(file".inp", "r", stdin); freopen(file".out", "w", stdout); } input(); proc(); return 0; }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:90:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   90 |         freopen(file".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:91:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   91 |         freopen(file".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...