Submission #922705

#TimeUsernameProblemLanguageResultExecution timeMemory
922705salmonPainting Walls (APIO20_paint)C++14
0 / 100
3 ms8540 KiB
#include "paint.h" #include <bits/stdc++.h> using namespace std; set<int> lst[100100]; vector<int> pos[50100]; 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 == N - 1){ temp.push_back({0,v.back().second + 1 }); v.pop_back(); } else{ temp.push_back({0,1}); } } while(it < v.size() && it1 < contract[i].size()){ if((v[it].first + 1) % M == contract[i][it1]){ temp.push_back({v[it].first + 1,v[it].second + 1}); if(v[it].second + 1 >= M){ can[i] = true; } } if(v[it].first + 1 <= contract[i][it1]){ it++; } else{ it1++; } } } for(int i = 0; i < N; i++){ if(can[i + M - 1 % N]) l[i] = true; else l[i] = false; } int ans = 1100100100; if(!l[0]) return -1; int cont = 1; int r = 0; 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)

paint.cpp: In function 'int minimumInstructions(int, int, int, std::vector<int>, std::vector<int>, std::vector<std::vector<int> >)':
paint.cpp:44:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   44 |         while(it < v.size() && it1 < contract[i].size()){
      |               ~~~^~~~~~~~~~
paint.cpp:44:36: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   44 |         while(it < v.size() && it1 < contract[i].size()){
      |                                ~~~~^~~~~~~~~~~~~~~~~~~~
#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...