제출 #711626

#제출 시각아이디문제언어결과실행 시간메모리
711626irmuun밀림 점프 (APIO21_jumps)C++17
컴파일 에러
0 ms0 KiB
#include<bits/stdc++.h>
#include "jumps.h"
using namespace std;
#define pb push_back
#define ll long long
#define ff first
#define ss second
#define PI 3.1415926535897932384626433
#define all(s) s.begin(),s.end() 

const int maxn=200000,INF=1e9;
bool ok=true;
vector<int>adj[maxn+5];
int n,used[maxn+5],dist[maxn+5];

int dfs(int a,int b,int c,int d){
    queue<int>q;
    fill(used,used+n+1,0);
    fill(dist,dist+n+1,0);
    for(int i=a;i<=b;i++) q.push(i);
    while(!q.empty()){
        int x=q.front();
        q.pop();
        if(c<=x&&x<=d) return dist[x];
        for(auto u:adj[x]){
            if(dist[u]==INF){
                dist[u]=dist[x]+1;
                q.push(u);
            }
        }
    }
    return -1;
}
void init(int N,vector<int>H){
    n=N;
    for(int i=0;i<n;i++){
        if(H[i]!=i+1) ok=false;
    }
    stack<pair<int,int>>s;
    for(int i=0;i<n;i++){
        while(!s.empty()&&s[i].ff<H[i]) s.pop();
        if(!s.empty()) adj[i].pb(s.top().ss);
        s.push({H[i],i});
    }
    while(!s.empty()) s.pop();
    for(int i=n-1;i>=0;i--){
        while(!s.empty()&&s[i].ff<H[i]) s.pop();
        if(!s.empty()) adj[i].pb(s.top().ss);
        s.push({H[i],i});
    }
}
int minimum_jumps(int A, int B, int C, int D){
    if(ok==true){
        return C-B;
    }
    return dfs(A,B,C,D);
}

컴파일 시 표준 에러 (stderr) 메시지

jumps.cpp: In function 'void init(int, std::vector<int>)':
jumps.cpp:41:28: error: no match for 'operator[]' (operand types are 'std::stack<std::pair<int, int> >' and 'int')
   41 |         while(!s.empty()&&s[i].ff<H[i]) s.pop();
      |                            ^
jumps.cpp:47:28: error: no match for 'operator[]' (operand types are 'std::stack<std::pair<int, int> >' and 'int')
   47 |         while(!s.empty()&&s[i].ff<H[i]) s.pop();
      |                            ^