Submission #922763

# Submission time Handle Problem Language Result Execution time Memory
922763 2024-02-06T06:05:03 Z salmon Painting Walls (APIO20_paint) C++14
0 / 100
2 ms 8536 KB
#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 == 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});
            }
        }

        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});
            }
        }

        v = temp;
    }


    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 = 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

paint.cpp: In function 'int minimumInstructions(int, int, int, std::vector<int>, std::vector<int>, std::vector<std::vector<int> >)':
paint.cpp:48:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   48 |             while(it != v.size() && v[it].first + 1 < j){
      |                   ~~~^~~~~~~~~~~
paint.cpp:52:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   52 |             if(it != v.size() && v[it].first + 1 == j){
      |                ~~~^~~~~~~~~~~
paint.cpp:31:13: warning: unused variable 'it1' [-Wunused-variable]
   31 |         int it1 = 0;
      |             ^~~
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 8536 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 8536 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 8536 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 8536 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 8536 KB Output isn't correct
2 Halted 0 ms 0 KB -