Submission #1191273

#TimeUsernameProblemLanguageResultExecution timeMemory
1191273SmuggingSpunSelotejp (COCI20_selotejp)C++20
0 / 110
1 ms324 KiB
#include<bits/stdc++.h>
#define taskname "D"
using namespace std;
template<class T>void minimize(T& a, T b){
    if(a > b){
        a = b;
    }
}
const int INF = 1e9;
int main(){
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	if(fopen(taskname".inp", "r")){
		freopen(taskname".inp", "r", stdin);
	}
    int n, m;
    cin >> n >> m;
    vector<int>dp(1 << m, INF);
    string pre = string(m, '.');
    for(int _ = dp[0] = 0; _ < n; _++){
        string cur;
        cin >> cur;
        for(int i = 0; i < m; i++){
            vector<int>ndp(1 << m, INF);
            for(int mask = (1 << m) - 1; mask > -1; mask--){
                int n_mask = (mask << 1) & ((1 << m) - 1);
                if(cur[i] == '.'){
                    minimize(ndp[n_mask], dp[mask]);
                    minimize(ndp[n_mask | 1], dp[mask]);
                }
                else{
                    minimize(ndp[n_mask], dp[mask] + int(i == 0 || cur[i - 1] == '.' || (mask & 1)));
                    minimize(ndp[n_mask | 1], dp[mask] + int(pre[i - 1] == '.' || (mask >> (m - 1) & 1) == 0));
                }
            }
            swap(dp, ndp);
        }
        swap(cur, pre);
    }
    cout << *min_element(dp.begin(), dp.end());
}

Compilation message (stderr)

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