Submission #1161638

#TimeUsernameProblemLanguageResultExecution timeMemory
1161638AvianshPainting Walls (APIO20_paint)C++20
12 / 100
36 ms12616 KiB
#include "paint.h"

#include <bits/stdc++.h>

using namespace std;

int minimumInstructions(int n, int m, int k, vector<int> c,vector<int> a, vector<vector<int>> b) {
    vector<int>pos[k];
    for(int i = 0;i<m;i++){
        sort(b[i].begin(),b[i].end());
        for(int j : b[i]){
            pos[j].push_back(i);
        }
    }
    bool val[n];
    fill(val,val+n,0);
    for(int i = 0;i<n;i++){
        int col = c[i];
        if(pos[col].size()==0){
            return -1;
        }
    }

    for(int i = 0;i<n-1;i++){
        int col = c[i];
        int col2 = c[i+1];
        if(((pos[col][0]+1)%m)==pos[col2][0]){
            //this is good
            val[i]=1;
        }
    }
    if(m==1){
        val[n-1]=1;
    }
    int ans = 0;
    int cn = 0;
    for(int i = 0;i<n;i++){
        cn++;
        if(val[i]==0){
            //this must be endpoint
            if(cn<m){
                return -1;
            }
            ans+=(cn+m-1)/m;
            cn=0;
        }
    }
    ans+=(cn+m-1)/m;
    return ans;
}
#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...