Submission #376676

#TimeUsernameProblemLanguageResultExecution timeMemory
376676lycSelotejp (COCI20_selotejp)C++14
110 / 110
58 ms40428 KiB
#include <bits/stdc++.h> using namespace std; #define TRACE(x) cerr << #x << " :: " << x << endl #define _ << " " << #define SZ(x) (int)(x).size() #define ALL(x) (x).begin(),(x).end() #define FOR(i,a,b) for(int i=(a);i<=(b);++i) #define RFOR(i,a,b) for (int i=(a);i>=(b);--i) const int mxN = 1000; const int mxM = 10; int N, M; string G[mxN]; int dp[mxN+1][mxM][1<<mxM]; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> N >> M; FOR(i,0,N-1){ cin >> G[i]; } RFOR(i,N-1,0){ RFOR(j,M-1,0){ FOR(x,0,(1<<M)-1){ if (G[i][j] == '.') { dp[i][j][x] = dp[i+(j+1)/M][(j+1)%M][x]; } else { // 1 v 0 h dp[i][j][x] = min( dp[i+(j+1)/M][(j+1)%M][x|(1<<j)] + (i==0 || G[i-1][j]=='.' || (x&(1<<j))==0), dp[i+(j+1)/M][(j+1)%M][x&(~(1<<j))] + (j==0 || G[i][j-1]=='.' || (x&(1<<(j-1)))>0) ); } //TRACE(i _ j _ x _ dp[i][j][x]); }}} cout << dp[0][0][0] << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...