c++
1#include <bits/stdc++.h> 2using namespace std; 3 4int main(){ 5 int n,q; 6 cin>>n>>q; 7 vector<int> x(n),y(n); 8 for(int i=0; i<n; i++){cin>>x.at(i); y.at(i)=y.at(i-1)+x.at(i); } 9 for(int i=0; i<n; i++){ 10 int l,r; 11 cin>>l>>r; 12 cout<<y.at(r-1)-y.at(l-1)<<endl; 13 } 14 }
このコードを実行しようとすると
[Wandbox] Start
terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check: __n (which is 18446744073709551615) >= this->size() (which is 10)
[Signal] Aborted
[Wandbox] Finish
と出てエラーになってしまうのですが何故なのかわかりません
・18446744073709551615という数字はどこから来ているか?
・エラーが出ないようにするにはどうすればいいのか?
を教えてください
問題は競技プログラミンングの鉄則の演習問題A06です
問題が提示されていないため回答が提示しづらいですが、`18446744073709551615`は、正の整数が期待されるsize_tの箇所に、負の値(-1)を指定しているため発生しているのではないかと思います。
少なくとも`y.at(i-1)`はi = 0の場合に負の値になりそうですが、意図した挙動でしょうか?
回答1件
あなたの回答
tips
プレビュー