This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "paint.h"
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> ii;
std::string solve_puzzle(std::string s, std::vector<int> c) {
string rp;
rp.resize(s.size());
vector<int>id;
vector<int> p,b;
b.push_back(0);
for(int i=0;i<s.size();i++){
if(s[i]=='_'){
b.push_back(i);
// cout<<i<<" ";
}
}
//cout<<endl;
// b.push_back(s.size());
int k=s.size()-1,l=s.size()-1,r=c.size()-1,bl=b.size()-2;
//bl=0;
vector<ii>vii;
while(true){
// printf("b[bl]: %d k: %d c[r]: %d l: %d\n", b[bl],k,c[r],l);
if(k<=b[bl]){
bl--;
k--;
}
if(k<=-1 or r<=-1){
break;
}
if(l-b[bl]>=c[r]){
int a,d;
a=k;
for(int i=0;i<c[r];i++){
rp[k]='X';
k--;
}
d=k;
vii.push_back(ii(a,d+1));
r--;
if(k-b[bl]>=c[r]){
rp[k]='_';
k--;
}
l=k;
}
else{
rp[k]='_';
k--;
l=k;
}
}
for(int i=0;i<rp.size();i++){
if(rp[i]!='X' and rp[i]!='_'){
rp[i]='_';
}
}
string rp1;
rp1.resize(s.size());
b.push_back(s.size());
k=0,l=0,r=0,bl=1;
bl=1;
vector<ii>vii1;
while(true){
/* cout<<rp1<<endl;
printf("b[bl]: %d k: %d c[r]: %d l: %d\n", b[bl],k,c[r],l);*/
if(s[k]=='_'){
rp1[k]='_';
k++;
}
if(k>=b[bl]){
bl++;
k++;
}
if(k>=s.size() or r>=c.size()){
break;
}
if(b[bl]-l>=c[r]){
int a,d;
a=k;
for(int i=0;i<c[r];i++){
rp1[k]='X';
k++;
}
d=k-1;
vii1.push_back(ii(a,d));
r++;
if(b[bl]-k>=c[r]){
rp1[k]='_';
k++;
}
l=k;
}
else{
rp1[k]='_';
k++;
l=k;
}
}
for(int i=0;i<rp.size();i++){
if(rp1[i]!='X' and rp1[i]!='_'){
rp1[i]='_';
}
}
bool sw=0;
//cout<<rp<<endl<<rp1<<endl;
/* for(int i=0;i<vii.size();i++){
cout<<vii[i].first<<" "<<vii[i].second<<endl;
}
cout<<endl;
for(int i=0;i<vii1.size();i++){
cout<<vii1[i].first<<" "<<vii1[i].second<<endl;
}
for(int i=0;i<b.size();i++){
cout<<b[i]<<" ";
}
cout<<endl;*/
int j,j1;
string ans;
ans.resize(s.size());
j=vii.size()-1;
j1=0;
int k1=0;
for(int i=0;i<vii.size();i++){
for(int k=vii1[j1].first;k<=vii[j].first;k++){
if(k>b[k1+1]){
k1++;
}
// cout<<b[k1+1]<<" "<<c[j]<<endl;
if(b[k1+1]-b[k1]>=c[j1] and k>=b[k1] and k<=b[k1+1]){
if(s[k]=='_'){
ans[k]='_';
}
else{
if(rp[k]==rp1[k] and rp[k]=='X'){
ans[k]=rp[k];
}
else{
ans[k]='?';
}
}
}
}
j--;
j1++;
}
for(int i=0;i<ans.size();i++){
if(ans[i]!='X' and ans[i]!='?' and ans[i]!='_')
ans[i]='_';
}
// cout<<ans<<endl;
return ans;
}
Compilation message (stderr)
paint.cpp: In function 'std::__cxx11::string solve_puzzle(std::__cxx11::string, std::vector<int>)':
paint.cpp:12:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=0;i<s.size();i++){
~^~~~~~~~~
paint.cpp:55:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=0;i<rp.size();i++){
~^~~~~~~~~~
paint.cpp:77:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if(k>=s.size() or r>=c.size()){
~^~~~~~~~~~
paint.cpp:77:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if(k>=s.size() or r>=c.size()){
~^~~~~~~~~~
paint.cpp:102:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=0;i<rp.size();i++){
~^~~~~~~~~~
paint.cpp:127:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=0;i<vii.size();i++){
~^~~~~~~~~~~
paint.cpp:151:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=0;i<ans.size();i++){
~^~~~~~~~~~~
paint.cpp:107:10: warning: unused variable 'sw' [-Wunused-variable]
bool sw=0;
^~
# | 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... |