제출 #1244252

#제출 시각아이디문제언어결과실행 시간메모리
1244252edga1Paint By Numbers (IOI16_paint)C++20
59 / 100
1 ms328 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;
}

컴파일 시 표준 에러 (stderr) 메시지

paint.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
paint_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...