55408


[AtCoderBeginnerContest128](https://atcoder.jp/contests/abc128)のE問題を  
C++14で解こうとしているのですが  
RuntimeErrorになってしまいます。  
原因をご教授いただければ幸いです。  
以下が当該プログラムです。

[code]

    #include<bits/stdc++.h>
    using namespace std;
    #define rep(i,n) for(int (i)=0;(i)<(n);(i)++)
    
    int main(){
    
    //設定
     int N,Q,i,j;
     typedef pair<int, int> P;
     cin >> N >> Q;
    
     vector<int> X(N),S(N),T(N),D(Q);
     set<pair<int, int>> shugo;
    
     rep(i,N){
      cin >> S[i] >> T[i] >> X[i];
    }
     rep(i,Q){
      cin >> D[i];
     }
     rep(i,Q){
      shugo.insert(P(D[i],i));
    }
    
    //tieに代入して地点X[i]でソート
     vector<tuple<int, int, int>> a(N);
    rep(i,N){
    a[i] = tie(X[i], S[i], T[i]);
    }
    sort(a.begin(), a.end());
    
    //答えを求める
    vector<int> ans;
    rep(i,Q){
    ans[i]=-1;
    }
    rep(i,N){
     int x,l,r;
     tie(x,l,r)=a[i];
     auto it = shugo.lower_bound(P(l-x,-1));
     while(it!=shugo.end()){
      if((it->first) >= r-x){ break; }
      ans[it->second] = x;
      shugo.erase(it++);
    }
    }
    
    //表示する
    rep(i,Q){
     cout << ans[i] << endl;
    }
    
    }
    
[/code]


CC BY-SA 4.0
2019-05-31T10:14:05.600
55407
2019-05-31T10:37:46.130
34540
question
c++
AtCoder ABC128Eの回答が何故かRuntimeErrorになります


`ans`の長さが0なのに`Q`個分添え字でアクセスしてしまっていますね。

[code]

    rep(i,Q){
      ans.push_back(-1);
    }
    
[/code]

とすると、サンプルは通るようになります。(もちろん`ans`のサイズを指定して初期化してもよいでしょう。)


CC BY-SA 4.0
2019-05-31T10:37:46.130
55408
2019-05-31T10:37:46.130
13199
55407
answer