Submission #1298568

#TimeUsernameProblemLanguageResultExecution timeMemory
1298568HuyATLove Polygon (BOI18_polygon)C++20
Compilation error
0 ms0 KiB
#include<bits/stdc++.h>
#define newl '\n'

const int N = 1e5 + 10;
const int V = 1e7 + 10;
const long long INF = 1e18;
const long long M = 1e9 + 7;

struct Solver{
    int n,k,r;
    std::vector<int> a,b;
    std::vector<std::vector<int>> pos,add,remov;
    void readData(){
        std::cin >> n >> k >> r;
        a.assign(n + 1,0);
        b.assign(n + 1,0);
        pos.resize(n + 1);
        remov.resize(n + 1);
        add.resize(n + 1);
        for(int i = 1;i <= n;++i){
            std::cin >> a[i];
            pos[a[i]].emplace_back(i);
        }
        for(int i = 1;i <= r;++i){
            int p;
            std::cin >> p;
            std::cin >> b[p];
        }
    }
    void solve(){
        for(int i = 0;i < k;++i){
            if(b[i] == 0){
                continue;
            }
            for(int j = b[i] - 1;j < (int)pos[i].size();++j){
                add[pos[i][j]].emplace_back(pos[i][j - b[i] + 1]);
                if(j < (int)pos[i].size() - 1){
                    remov[pos[i][j + 1]].emplace_back(pos[i][j - b[i] + 1]);
                }
            }
        }
        std::multiset<int> s;
        int ans = V;
        for(int i = 1;i <= n;++i){
            for(int pos : add[i]){
                s.insert(pos);
            }
            for(int pos : remov[i]){
                s.erase(s.find(pos));
            }
            if((int)s.size() == r){
                ans = std::min(ans,i - *s.begin() + 1);
            }
        }
        std::cout << (ans == V ? "impossible" : ans);
    }
    void main(){
        readData();
        solve();
    }
};
int main(){
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);std::cout.tie(nullptr);
    Solver().main();
    return 0;
}

Compilation message (stderr)

polygon.cpp: In member function 'void Solver::solve()':
polygon.cpp:55:32: error: operands to '?:' have different types 'const char*' and 'int'
   55 |         std::cout << (ans == V ? "impossible" : ans);
      |                       ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~