# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
138255 | DanerZein | Paint By Numbers (IOI16_paint) | C++14 | 2 ms | 380 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;
for(int i=0;i<s.size();i++){
int cb=0;
if(s[i]=='_'){
if(c[k]==0){
k++;
}
rp+='_';
continue;
}
for(int j=i;j<s.size();j++){
if(s[i]=='_'){
break;
}
cb++;
}
if(abs(i-cb)>=c[k]){
if(c[k]==c1[k]){
li.push_back(ii(i,0));
}
if(c[k]==0){
rp+='_';
k++;
continue;
}
c[k]--;
rp+='X';
}
else{
if(c[k]==0){
k++;
}
rp+='_';
}
}
string rp1;
rp1.resize(rp.size());
k=c.size()-1;
for(int i=s.size()-1;i>=0;i--){
int cb=0;
if(s[i]=='_'){
if(c1[k]==0){
k--;
}
rp1[i]='_';
continue;
}
for(int j=i;j<s.size();j++){
if(s[i]=='_'){
break;
}
cb++;
}
if(abs(i-cb)>=c1[k]){
if(c1[k]==aux[k]){
li[k].second=i;
}
if(c1[k]==0){
rp1[i]='_';
k--;
continue;
}
c1[k]--;
rp1[i]='X';
}
else{
if(c1[k]==0){
k--;
}
rp1[i]='_';
}
}
// cout<<rp<<endl;
// cout<<rp1<<endl;
string ans;
ans.resize(rp.size());
for(int i=0;i<li.size();i++){
for(int j=li[i].first;j<=li[i].second;j++){
if(rp[j]=='X' and rp[j]==rp1[j]){
ans[j]='X';
}
else if(s[j]=='_'){
int cb=0;
for(k=j+1;k<=li[i].second;k++){
if(s[k]=='_'){
break;
}
cb++;
}
if(cb>=aux[i]){
ans[j]='_';
}
else{
for(k=j+1;k<li[i].second;k++){
if(s[k]=='_'){
ans[k]='_';
break;
}
ans[k]='_';
}
j=k;
}
}
else
ans[j]='?';
}
}
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... |