제출 #1272165

#제출 시각아이디문제언어결과실행 시간메모리
1272165StefanSebez벽 칠하기 (APIO20_paint)C++20
0 / 100
8 ms1340 KiB
#include "paint.h"
#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define ll long long
#define ld long double
const int N=1e5+50;
int n,m,K;
bool desno[N];
bool imac[210][510];
int minimumInstructions(int n1,int m1,int K1,vector<int>C,vector<int>A,vector<vector<int>>colors) {
    n=n1,m=m1,K=K1;
    for(int i=0;i<m;i++){
        sort(colors[i].begin(),colors[i].end());
    }
    for(int i=0;i<m;i++){
        for(auto j:colors[i]) imac[i][j]=true;
    }
    for(int x=0;x<m;x++){
        for(int y=0;y<=n-m;y++){
            //printf("%i %i\n",x,y);
            bool moze=true;
            for(int l=0;l<m;l++){
                /*int lb=lower_bound(colors[(x+l)%m].begin(),colors[(x+l)%m].end(),C[y+l])-colors[(x+l)%m].begin();
                if(!(lb<colors[(x+l)%m].size()&&colors[(x+l)%m][lb]==C[y+l])){
                    moze=false;
                }*/
                if(!imac[(x+l)%m][C[y+l]]){moze=false;break;}
            }
            if(moze) desno[y]=true;
        }
    }
    //for(int i=0;i<n;i++) cout<<desno[i]<<" ";cout<<endl;
    int res=0;
    for(int i=0;i<n;res++){
        //printf("%i ",i);
        if(!desno[i]){res=-1;break;}
        int ind=i+m;
        for(int j=i+m;j>=i+1;j--){
            if(desno[j]){ind=j;break;}
        }
        i=ind;
    }
    return res;
}
#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...