Submission #1268298

#TimeUsernameProblemLanguageResultExecution timeMemory
1268298dex111222333444555Nautilus (BOI19_nautilus)C++20
0 / 100
1 ms1348 KiB
#include <bits/stdc++.h> #define all(v) begin(v), end(v) #define TIME (1.0 * clock() / CLOCKS_PER_SEC) using namespace std; const int MAXN = 505, MAXM = 5005; int numRow, numCol, lenS; string s; bool M1; bitset<MAXN> board[MAXN]; bitset<MAXN> dp[MAXN][MAXM]; void input(){ cin >> numRow >> numCol >> lenS; for(int row = 1; row <= numRow; row++){ for(int col = 1; col <= numCol; col++){ char c; cin >> c; board[row] <<= 1; if (c == '.') board[row] |= 1; } dp[row][0] = board[row]; } cin >> s; s = '_' + s; } void solve(){ for(int pos = 1; pos <= lenS; pos++) for(int row = 1; row <= numRow; row++){ if (s[pos] == 'D'){ dp[row][pos] = (dp[row][pos - 1] >> 1) & board[row]; } if (s[pos] == 'T'){ dp[row][pos] = (dp[row][pos - 1] << 1) & board[row]; } if (s[pos] == 'N'){ dp[row][pos] = (dp[row - 1][pos - 1]) & board[row]; } if (s[pos] == 'B'){ dp[row][pos] = (dp[row + 1][pos - 1]) & board[row]; } if (s[pos] == '?'){ dp[row][pos] = ((dp[row][pos - 1] >> 1) | (dp[row][pos - 1] << 1) | (dp[row - 1][pos - 1]) | (dp[row + 1][pos - 1])) & board[row]; } } int res = 0; for(int row = 1; row <= numRow; row++) res += dp[row][lenS].count(); cout << res << '\n'; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); if (fopen("TREASURE.inp", "r")){ freopen("TREASURE.inp", "r", stdin); freopen("TREASURE.out", "w", stdout); } input(); solve(); cerr << TIME << ".s\n"; bool M2; cerr << abs(&M1 - &M2) / 1024 / 1024 << " MB\n"; }

Compilation message (stderr)

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