# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
138899 | DanerZein | Paint By Numbers (IOI16_paint) | C++14 | 5 ms | 632 KiB |
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) {
vector<ii>li;
vector<int>c1=c,aux=c;
string rp;
int k=0,j=0;
while(true){
if(k==c.size()){
break;
}
if(j==s.size()){
break;
}
if(s[j]=='_'){
rp+='_';
j++;
continue;
}
int cb=0;
for(int i=j;i<s.size();i++){
if(s[i]=='_'){
break;
}
cb++;
}
if(cb>=c[k]){
for(;j<s.size();j++){
if(c[k]==aux[k]){
li.push_back(ii(j,0));
}
rp+='X';
c[k]--;
if(c[k]==0){
break;
}
}
j++;
if(rp.size()+1<=s.size())
rp+='_';
j+=1;
k++;
}
else{
rp+='_';
j++;
}
}
for(int i=rp.size();i<s.size();i++){
rp+='_';
}
string rp1;
k=c.size()-1;
j=rp.size()-1;
rp1.resize(rp.size());
while(j!=-1){
// cout<<j<<" "<<k<<endl;
if(j<=-1){
break;
}
if(k<=-1){
break;
}
if(s[j]=='_'){
rp1[j]='_';
j--;
continue;
}
int cb=0;
for(int i=j;i>=0;i--){
if(s[i]=='_'){
break;
}
cb++;
}
// cout<<cb<<" c[k]: "<<c[k]<<endl;
if(cb>=c1[k]){
for(;j>=0;j--){
rp1[j]='X';
if(c1[k]==aux[k]){
li[k].second=j;
}
c1[k]--;
if(c1[k]==0){
break;
}
}
k--;
j--;
rp1[j]='_';
j--;
}
else{
rp1[j]='_';
j--;
}
}
for(;j>=0;j--){
rp1[j]='_';
}
// cout<<rp<<endl;
//cout<<rp1<<endl;
string ans;
/* for(int i=0;i<li.size();i++){
cout<<li[i].first<<" "<<li[i].second<<endl;
}*/
ans.resize(rp.size());
for(int i=0;i<li.size();i++){
int l,r;
r=li[i].first+aux[i];
l=li[i].second-aux[i];
for(k=l;k<=r;k++){
if(rp[k]=='X' and rp1[k]=='X'){
ans[k]='X';
}
}
for(k=li[i].first;k<=li[i].second;k++){
if(s[k]=='_'){
ans[k]='_';
}
if(ans[k]!='_' and ans[k]!='X'){
ans[k]='?';
}
}
}
// cout<<ans<<endl;
for(int i=0;i<ans.size();i++){
if(ans[i]!='X' and ans[i]!='?' and ans[i]!='_'){
ans[i]='_';
}
}
return ans;
}
Compilation message (stderr)
# | 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... |