Submission #427355

#TimeUsernameProblemLanguageResultExecution timeMemory
427355vincentpikachu20Paint By Numbers (IOI16_paint)C++17
59 / 100
1 ms300 KiB
#include "paint.h" #include <bits/stdc++.h> #define int long long using namespace std; vector<int> bt; bool backtrack(string &s, vector<signed> &c, int i, int p){ int n = s.size(); int k = c.size(); if(i == k) return true; do{ bool okay = true; int mine = -1; for(int j = p; j < p + c[i]; j ++){ if(s[j] == '_'){ okay = false; mine = j; break; } } if(okay && (p + c[i] == n || s[p + c[i]] != 'X')){ bt.push_back(p); if(backtrack(s,c,i+1,p + c[i] + 1)) return true; bt.pop_back(); } else if(s[p] == 'X') return false; else p ++; }while(p + c[i] <= n); return false; } string solve_puzzle(string s, vector<signed> c) { int n = s.size(), k = c.size(); string ans = s; //put all to the lefts backtrack(s,c,0,0); vector<int> l = bt; //put all to the rights bt.clear(); reverse(s.begin(), s.end()); reverse(c.begin(), c.end()); backtrack(s,c,0,0); reverse(s.begin(), s.end()); reverse(c.begin(), c.end()); reverse(bt.begin(), bt.end()); for(int i = 0; i < k; i ++) bt[i] = n-bt[i]-c[i]; vector<int> r = bt; //apply x's for(int i = 0; i < k; i ++){ for(int j = l[i]; j < r[i] + c[i]; j ++) ans[j] = (ans[j] == '.' ? '?' : ans[j]); for(int j = r[i]; j < l[i] + c[i]; j ++) ans[j] = 'X'; } for(char &v : ans) if(v == '.') v = '_'; return ans; }

Compilation message (stderr)

paint.cpp: In function 'bool backtrack(std::string&, std::vector<int>&, long long int, long long int)':
paint.cpp:12:31: warning: variable 'mine' set but not used [-Wunused-but-set-variable]
   12 |         bool okay = true; int mine = -1;
      |                               ^~~~
#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...