# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1191273 | SmuggingSpun | Selotejp (COCI20_selotejp) | C++20 | 1 ms | 324 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());
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |