# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
922775 | salmon | Painting Walls (APIO20_paint) | C++14 | 1437 ms | 409576 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "paint.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> pos[100100];
vector<int> contract[100100];
bool can[100100];
bool l[100100];
int minimumInstructions(int N, int M, int K, vector<int> C,
vector<int> A, vector<vector<int>> B) {
for(int i = 0; i < N; i++){
pos[C[i]].push_back(i);
can[i] = false;
}
for(int i = 0; i < M; i++){
for(int j : B[i]){
for(int k : pos[j]){
contract[k].push_back(i);
}
}
}
vector<pair<int,int>> v;
for(int i = 0; i < N; i++){
int it = 0;
int it1 = 0;
vector<pair<int,int>> temp;
if(contract[i].size() != 0 && contract[i][0] == 0){
if(!v.empty() && v.back().first == M - 1){
temp.push_back({0,v.back().second + 1 });
if(v.back().second + 1 >= M){
can[i] = true;
}
v.pop_back();
}
else{
temp.push_back({0,1});
if(M == 1){
can[i] = true;
}
}
}
for(int j : contract[i]){
while(it != v.size() && v[it].first + 1 < j){
it++;
}
if(it != v.size() && v[it].first + 1 == j){
temp.push_back({v[it].first + 1,v[it].second + 1});
if(v[it].second + 1 >= M){
can[i] = true;
}
}
else{
temp.push_back({j,1});
if(M == 1){
can[i] = true;
}
}
}
v = temp;
}
for(int i = 0; i < N; i++){
if(i + M - 1 < N && can[i + M - 1]) l[i] = true;
else l[i] = false;
}
int ans = 1100100100;
if(!l[0]) return -1;
int cont = 1;
int r = M - 1;
int go = N - 1;
int it = 0;
int take = 0;
while(r < go){
cont++;
take = r;
while(it <= r){
it++;
if(l[it]){
take = it + M - 1;
}
}
if(take == r){
cont = 1100100100;
break;
}
r = take;
}
ans = min(ans,cont);
if(ans == 1100100100) return -1;
return ans;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |