# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1273816 | Petrix | Paint By Numbers (IOI16_paint) | C++20 | 1 ms | 332 KiB |
#include <iostream>
#include <string>
#include <vector>
using namespace std;
#include "paint.h"
#include <cstdlib>
int sp[10001];
int mars[10001];
int rasp[10001];
string solve1(string s,vector<int> c){
int i,j,stg,aux;
string string_rasp;
for(i=0;i<c.size();i++){
sp[i+1]+=sp[i];
sp[i+1]+=c[i]+1;
}
for(i=0;i<s.size();i++){
for(j=0;j<=c.size();j++){
stg=1;
if(j){
if(i<sp[j]-1) stg=0;
}
if(c.size()-j){
if(j==0) aux=sp[c.size()-1];
else aux=sp[c.size()-1]-sp[j-1];
if(s.size()-1-i<aux) stg=0;
}
rasp[i]+=2*stg;
}
}
for(i=0;i<s.size();i++){
for(j=0;j<c.size();j++){
if(i+c[j]-1>=s.size()) continue;
stg=1;
if(j-1>=0){
if(i<sp[j]-1) stg=0;
}
if(j+1<c.size()){
if(s.size()-i-c[j]<sp[c.size()-1]-sp[j]) stg=0;
}
if(stg){
mars[i]+=1;
mars[i+c[j]]-=1;
}
}
}
for(i=0;i<s.size();i++){
if(i) mars[i]+=mars[i-1];
rasp[i]+=min(mars[i],1);
if(rasp[i]==3) string_rasp+='?';
else if(rasp[i]==2) string_rasp+='_';
else string_rasp+='X';
}
return string_rasp;
}
string solve_puzzle(string s,vector<int> c) {
return solve1(s,c);
}
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... |