Submission #1244784

#TimeUsernameProblemLanguageResultExecution timeMemory
1244784SpyrosAlivPaint By Numbers (IOI16_paint)C++20
32 / 100
15 ms328 KiB
#include "paint.h" #include <bits/stdc++.h> using namespace std; bool pos(string s, vector<int> c) { int n = s.size(); int k = c.size(); vector<vector<bool>> dp(n+2, vector<bool>(k+1, false)); vector<int> ps(n, 0); if (s[0] == '_') ps[0] = 1; for (int i = 1; i < n; i++) { ps[i] = ps[i-1]; if (s[i] == '_') ps[i]++; } for (int i = 0; i <= n+1; i++) dp[i][k] = true; for (int curr = k-1; curr >= 0; curr--) { for (int i = n-1; i >= 0; i--) { int upto = i + c[curr] - 1; if (upto >= n) continue; if (upto < n-1 && s[upto+1] == 'X') continue; int tot = ps[upto]; if (i > 0) tot -= ps[i-1]; if (tot != 0) continue; bool pos = false; for (int j = upto + 2; j <= n + 1; j++) { if (dp[j][curr+1]) { pos = true; break; } if (s[j] == 'X') break; } dp[i][curr] = pos; } } for (int i = 0; i <= n+1; i++) { if (dp[i][0]) return true; if (s[i] == 'X') return false; } return false; } std::string solve_puzzle(std::string s, std::vector<int> c) { int n = s.size(); int k = c.size(); string ans = s; for (int i = 0; i < n; i++) { if (s[i] != '.') continue; bool posX = false, pos_ = false; s[i] = 'X'; if (pos(s, c)) posX = true; s[i] = '_'; if (pos(s, c)) pos_ = true; if (posX && pos_) ans[i] = '?'; else if (posX) ans[i] = 'X'; else ans[i] = '_'; s[i] = '.'; } return ans; } /* int main() { string s; cin >> s; int k; cin >> k; vector<int> c(k); for (int i = 0; i < k; i++) cin >> c[i]; cout << solve_puzzle(s, c) << "\n"; }*/

Compilation message (stderr)

paint.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
paint_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...