想請問一下以下我寫的程式碼,哪裡有問題
有過b966,
但跑這題,在資測0,1,4三個點卻顯示"記憶體區段錯誤
結果只有40分
請不吝賜教
#include<iostream>
using namespace std;
int main() {
int n;
cin>>n;
int l[n], r[n];
int max = 0;
for(int i = 0; i < n; i++) {
cin>>l[i];
cin>>r[i];
if(max < r[i])
max = r[i];
}
bool b[max] = {0};
for(int i = 0; i < n; i++) {
for(int j = l[i]; j < r[i]; j++)
b[j] = 1;
}
int num = 0;
for(int i = 0; i < max; i++)
if(b[i] == 1)
num++;
cout<<num;
return 0;
}
bool b[max] = {0};
max最大可能是9999999,你的陣列太大了,會overflow。就算改成動態記憶體或是用vector也會TLE,改用好一點的方法吧
bool b[max] = {0};
max最大可能是9999999,你的陣列太大了,會overflow。就算改成動態記憶體或是用vector也會TLE,改用好一點的方法吧
只能說b966的側資太弱了,沒卡到worst case
只能說b966的側資太弱了,沒卡到worst case
r1ckyorz