Submission #789409

#TimeUsernameProblemLanguageResultExecution timeMemory
789409mindiyak벽 칠하기 (APIO20_paint)C++14
0 / 100
1598 ms31628 KiB
#include "paint.h" #include <vector> #include <unordered_set> #include <set> #include <iostream> using namespace std; vector<int> dp(1000000,1e9); vector<int> possibility(1000000,0); vector<vector<int>> colors(1000000,vector<int>()); int minimumInstructions(int N, int M, int K, std::vector<int> C,std::vector<int> A, std::vector<std::vector<int>> B) { vector<unordered_set<int>> contrcatorColor(M,unordered_set<int>()); bool case1 = true; for(int i=0;i<M;i++){ for(int j=0;j<A[i];j++){ colors[B[i][j]].push_back(i); contrcatorColor[i].insert(B[i][j]); if(colors[B[i][j]].size() > 1){ case1 = false; } } } bool possible = true; for(int i=0;i<=(N-M);i++){ // cout << "start pos is " << i << endl; bool coloured = false; for(int j=0;j<(int)colors[C[i]].size();j++){ int contractorStart = colors[C[i]][j]; possible = true; // cout << "contractor start " << contractorStart << endl; for(int k=0;k<M;k++){ // cout << (contractorStart+k)%M << " contractor " << C[i+k] << " color " << contrcatorColor[(contractorStart+k)%M].count(C[i+k]) << endl; if(contrcatorColor[(contractorStart+k)%M].count(C[i+k]) == 0){ possible = false; break; } } if(possible){ // cout << "possible to paint " << i << " start from " << contractorStart << endl; coloured = true; break; } } if(coloured){ possibility[i+M-1] = 1; } // cout << endl; } int ans = 0; set<pair<int,int>> values; // for(int i=0;i<N;i++){ // cout << possibility[i] << " "; // }cout << endl; for(int i=M-1;i<N;i++){ pair<int,int> a = *values.begin(); // for(auto k:values){ // cout << i << " " << k.first << " " << k.second << endl; // }cout << endl; if(a.second < (i-M)){ values.erase(a); i--; continue; } if(possibility[i]){ values.insert({a.first+1,i}); } if(i == N-1){ if(possibility[i]){ return a.first+1; }else{ return -1; } } } return -1; }

Compilation message (stderr)

paint.cpp: In function 'int minimumInstructions(int, int, int, std::vector<int>, std::vector<int>, std::vector<std::vector<int> >)':
paint.cpp:17:8: warning: variable 'case1' set but not used [-Wunused-but-set-variable]
   17 |   bool case1 = true;
      |        ^~~~~
paint.cpp:58:7: warning: unused variable 'ans' [-Wunused-variable]
   58 |   int ans = 0;
      |       ^~~
#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...