제출 #547692

#제출 시각아이디문제언어결과실행 시간메모리
547692Deepesson벽 칠하기 (APIO20_paint)C++17
100 / 100
569 ms14940 KiB
#include "paint.h"
#include <bits/stdc++.h>
#define MAX 100004
typedef std::pair<int,int> pii;
bool pode[MAX];
std::vector<int> curte[MAX];
int turno[MAX];
int seq[MAX];
int mod(int p,int M){
    p%=M;
    if(p<0)p+=M;
    return p;
}

int minimumInstructions(int N, int M, int K, std::vector<int> C, std::vector<int> A, std::vector<std::vector<int>> B) {
    for(int i=0;i!=M;++i){
        for(auto& x:B[i]){
            curte[x].push_back(i);
        }
    }
    for(int i=0;i!=N;++i){
        int cor1 = C[i];
        for(int j=0;j!=curte[cor1].size();++j){
            auto x = curte[cor1][j];
            int codigo = mod(i-x,M);
            if(turno[codigo]!=(i-1))seq[codigo]=0;
            ++seq[codigo];
            turno[codigo]=i;
            if(seq[codigo]>=M){
                pode[i-M+1]=true;
            }
        }
    }
    std::priority_queue<pii,std::vector<pii>,std::greater<pii>> queue;

    int min = 1e9;
    int last=0;

    for(int i=0;i!=N+1;++i){
        int ans=1e9;
        if(i){
            while(queue.size()){
                auto __ = queue.top();

                ///Invalido
                if(__.second<i-M){
                    queue.pop();
                    continue;
                }

                ans=__.first;
                break;

            }
        }else ans=0;

        if(pode[i])
        queue.push({ans+1,i});

     ///   std::cout<<"Custo "<<ans<<" ("<<i<<")\n";
        last=ans;
    }
    if(last>=1e9)return -1;
    ///Sucesso
    return last;
}

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

paint.cpp: In function 'int minimumInstructions(int, int, int, std::vector<int>, std::vector<int>, std::vector<std::vector<int> >)':
paint.cpp:23:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   23 |         for(int j=0;j!=curte[cor1].size();++j){
      |                     ~^~~~~~~~~~~~~~~~~~~~
paint.cpp:36:9: warning: unused variable 'min' [-Wunused-variable]
   36 |     int min = 1e9;
      |         ^~~
#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...