Submission #1079271

#TimeUsernameProblemLanguageResultExecution timeMemory
1079271ALeonidouPaint By Numbers (IOI16_paint)C++17
32 / 100
1 ms444 KiB
#include "paint.h" #include <bits/stdc++.h> using namespace std; #define ll int #define F first #define S second #define sz(x) (ll)x.size() #define pb push_back typedef vector <ll> vi; typedef pair <ll,ll> ii; typedef vector <ii> vii; #define dbg(x) cout<<#x<<": "<<x<<endl; #define dbg2(x,y) cout<<#x<<": "<<x<<" "<<#y<<": "<<y<<endl; #define dbg3(x,y,z) cout<<#x<<": "<<x<<" "<<#y<<": "<<y<<" "<<#z<<": "<<z<<endl; void printVct(vi &v){ for (ll i= 0; i<sz(v); i++){ cout<<v[i]<<" "; } cout<<endl; } bool checkWhite(const ll n, const ll k, const ll i, string &s, vi &c){ ll p = -2; //posisition of last black ll x = 0; //block index while (x < k && p + 1 + c[x] < i){ p += c[x] + 1; x++; } if (x >= k) return true; p = i-1; while (x < k && p + c[x] + 1 < n){ p += c[x] + 1; x++; } return (x >= k); } bool checkBlack(const ll n, const ll k, const ll i, string &s, vi &c){ // dbg(i); ll p = -2; //posisition of last black ll x = 0; //block index while (x < k-1 && p + 1 + c[x] < i-1){ p += c[x] + 1; x++; } // dbg(p); p = max(p + c[x] + 1, i); x++; // dbg(p); while (x < k && p + c[x] + 1 < n){ p += c[x] + 1; x++; } // dbg(x); // cout<<endl; return (x >= k); } string solve_puzzle(string s, vi c) { ll n = sz(s); ll k = sz(c); string ans; ans.resize(n); for (ll i =0; i<n; i++){ bool w = checkWhite(n,k,i,s,c); bool b = checkBlack(n,k,i,s,c); if (w && b) ans[i] = '?'; else if (w) ans[i] = '_'; else ans[i] = 'X'; } return ans; } /* .......... 3 1 3 2 */
#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...