Submission #1244887

#TimeUsernameProblemLanguageResultExecution timeMemory
1244887PlayVoltzSelotejp (COCI20_selotejp)C++20
110 / 110
56 ms81220 KiB
#include <cstdio> #include <stdio.h> #include <stdbool.h> #include <iostream> #include <map> #include <vector> #include <climits> #include <stack> #include <string> #include <queue> #include <algorithm> #include <set> #include <unordered_set> #include <unordered_map> #include <cmath> #include <cctype> #include <bitset> #include <iomanip> #include <cstring> #include <numeric> #include <cassert> #include <random> #include <chrono> #include <fstream> using namespace std; #define int long long #define pii pair<int, int> #define mp make_pair #define pb push_back #define fi first #define se second int32_t main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, m; cin>>n>>m; vector<string> vect(n+1); for (int i=1; i<=n; ++i)cin>>vect[i]; vector<vector<vector<int> > > dp(n+1, vector<vector<int> >(m, vector<int>((1<<m), LLONG_MAX/2))); for (int mask=0; mask<(1<<m); ++mask)dp[0][m-1][mask]=0; for (int i=1; i<=n; ++i)for (int j=0; j<m; ++j)for (int mask=0; mask<(1<<m); ++mask){ if (vect[i][j]=='#'){ if (mask&(1<<j)){ if (!j){ dp[i][j][mask]=min(dp[i][j][mask], dp[i-1][m-1][mask^(1<<j)]+1); if (i!=1&&vect[i-1][j]=='#')dp[i][j][mask]=min(dp[i][j][mask], dp[i-1][m-1][mask]); } else{ dp[i][j][mask]=min(dp[i][j][mask], dp[i][j-1][mask^(1<<j)]+1); if (i!=1&&vect[i-1][j]=='#')dp[i][j][mask]=min(dp[i][j][mask], dp[i][j-1][mask]); } } else{ if (!j)dp[i][j][mask]=min(dp[i-1][m-1][mask], dp[i-1][m-1][mask|(1<<j)])+1; else{ dp[i][j][mask]=min(dp[i][j-1][mask], dp[i][j-1][mask|(1<<j)])+1; if (vect[i][j-1]=='#'&&!(mask&(1<<(j-1))))dp[i][j][mask]=min(dp[i][j-1][mask], dp[i][j-1][mask|(1<<j)]); } } } else{ if (!j)dp[i][j][mask]=min(dp[i-1][m-1][mask], dp[i-1][m-1][mask^(1<<j)]); else dp[i][j][mask]=min(dp[i][j-1][mask], dp[i][j-1][mask^(1<<j)]); } } cout<<*min_element(dp[n][m-1].begin(), dp[n][m-1].end()); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...