# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1244252 | edga1 | Paint By Numbers (IOI16_paint) | C++20 | 1 ms | 328 KiB |
#include <bits/stdc++.h>
#include "paint.h"
#include <cstdlib>
#define fi first
#define se second
using namespace std;
string solve_puzzle(string s, vector<int> c) {
int n=s.length(),k=c.size();
vector<pair<int,int>> lm(k),rm(k);
int p=0;
for(int i=0; i<k; i++){
for(int j=0; j<c[i]; j++){
if(s[p+j]=='_'){
p+=j+1;
j=-1;
}
}
lm[i]={p,p+c[i]-1};
p=p+c[i]+1;
}
p=n-1;
for(int i=k-1; i>=0; i--){
for(int j=0; j<c[i]; j++){
if(s[p-j]=='_'){
p-=j+1;
j=-1;
}
}
rm[i]={p-c[i]+1,p};
p=p-c[i]-1;
}
string r;
for(int i=0; i<n; i++) r+="?";
vector<int> g(n,1);
for(int i=0; i<k; i++){
for(int j=rm[i].fi; j<=lm[i].se; j++) r[j]='X';
for(int sa=lm[i].fi; sa<=rm[i].fi; sa++){
int d=1;
for(int pp=0; pp<c[i]; pp++){
if(s[sa+pp]=='_') d=0;
}
if(d){
for(int pp=0; pp<c[i]; pp++){
g[sa+pp]=0;
}
}
}
}
for(int i=0; i<n; i++){
if(g[i] || s[i]=='_') r[i]='_';
}
return r;
}
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... |