#include "paint.h"
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#ifdef IOI
template<typename T>
void dbg(const T& t){
cout<<t<<endl;
}
template<typename T,typename... Args>
void dbg(const T& t,const Args&... args){
cout<<t<<" , ";
dbg(args...);
}
#define dbg(...) cout<<'('<<#__VA_ARGS__<<") : ";dbg(__VA_ARGS__);
#else
#define dbg(...) 1337;
#endif
// string solve_puzzle(string s, vector<int> c) {
// int n = s.length();
// int a = c[0];
// int l = -1e9;
// int r = 1e9;
// string ans(n,'X');
// for(int i =0;i<n;i++){
// if(i>=a||i<n-a){
// ans[i]='?';
// }
// }
// return ans;
// }
string solve_puzzle(string s, vector<int> c) {
int n = s.length();
int k = c.size();
k--;
ll pref[k];
memset(pref,0,sizeof(pref));
for(int i =0;i<k;i++){
pref[i] = c[i];
pref[i]++;
if(i) pref[i]+=pref[i-1];
}
string S(n,'?');
int t = n;
ll arr[n+1];
while(k>=0){
memset(arr,0,sizeof(arr));
ll a = c[k];
ll s = (k?pref[k-1]:0);
ll l = s;
ll r = t-a;
dbg(l,r)
if(r-l+1<=a){
for(int j = l;j<=r;j++){
arr[j]++;
arr[min((ll)n,j+a)]--;
}
for(int i=1;i<n;i++) arr[i]+=arr[i-1];
ll x = *max_element(arr,arr+n+1);
for(int j=l;j<min((ll)n,r+a);j++){
if(arr[j]==x){
S[j]='X';
}
}
if(l==r){
if(r)
S[r-1]='_';
}
}
t = r-1,
k--;
}
return S;
}
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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |