c++についての質問です。
以下のコードのvector<ll> tがbool isOK関数内に宣言されているときはsegmentation faultエラーが出ないのですが、以下のように関数外で宣言しているときにsegmentation faultエラーが出てしまいました。この原因がわからず困っています。
c++
1#include <bits/stdc++.h> 2using namespace std; 3typedef long long ll; 4#define rep(i,a,b) for(int (i)=(a);(i)<(b);(i)++) 5 6int N; 7vector<ll> H(N),S(N),t(N,0); 8 9bool isOK(ll index){ 10 //vector<ll> t(N,0); 11 bool ch = true; 12 rep(i,0,N){ 13 if(index<H[i]) { 14 ch = false; 15 } 16 else { 17 t[i] = (index - H[i]) / S[i]; 18 } 19 } 20 sort(t.begin(),t.end()); 21 rep(i,0,N){ 22 if(t[i]<i) ch = false; 23 } 24 return ch; 25} 26 27ll binary_search(){ 28 ll left = -1; 29 ll right = 1LL << 60; 30 31 while(abs(right - left)>1){ 32 ll mid = (right +left)/2; 33 if(isOK(mid)) right = mid; 34 else left = mid; 35 } 36 return right; 37} 38 39int main(){ 40 cin >> N; 41 rep(i,0,N){ 42 ll a,b; 43 cin >> a >> b; 44 H.push_back(a); 45 S.push_back(b); 46 } 47 ll ans = binary_search(); 48 cout << ans << endl; 49} 50 51
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/05 10:22