#33482: CPP NA:98% 求救! segmentation fault (core dumped)


liuc7721 (Shin)

學校 : 國立竹東高級中學
編號 : 179484
來源 : [211.23.203.91]
最後登入時間 :
2023-10-18 12:50:40
b966. 3. 線段覆蓋長度 -- 2016年3月apcs | From: [42.73.250.128] | 發表日期 : 2023-01-09 14:08

#include <algorithm>
#include <iostream>
using namespace std;

typedef struct _node {
  int s;
  int e;
} Node;
bool cmp(Node p, Node q) {
  if (p.s == q.s)
    return p.e < q.e;
  return p.s < q.s;
}
Node d[10000]; // 10000個Node,用於儲存線段的兩個端點座標
int main() {
  int N; //幾個線段

  while (cin >> N) {
    for (int i = 0; i < N; i++) {
      cin >> d[i].s >> d[i].e;
    }
    for(int i=0; i<N; i++){
      if(d[i].s > d[i].e){
        int tmp = d[i].s;
        d[i].s = d[i].e;
        d[i].e = tmp;
      }
    }
    //已將線段頭由小排到大,若頭相等,則由尾由小排到大
    sort(d, d + N, cmp);

    int length = 0; //總長度
    int s, e;
    for (int i = 0; i < N; i++) {
      s = d[i].s;
      e = d[i].e;

      while ((s <= d[i + 1 ].s) && (e >= d[i + 1].s)) { //是否有覆蓋到下一個線段
        if (d[i + 1].e < e) { //覆蓋到下一段的全部
          i++;
        } else { 
          e = d[i+1].e;
          i++;
        }
      }
      length += (e - s);
    }
    cout << length;
  }
}

 

卡在測資53  segmentation fault (core dumped)

哪邊有問題嗎QQ

 
#33670: Re: CPP NA:98% 求救! segmentation fault (core dumped)


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [101.136.203.77]
最後登入時間 :
2024-04-07 15:34:14
b966. 3. 線段覆蓋長度 -- 2016年3月apcs | From: [27.53.72.152] | 發表日期 : 2023-01-20 08:11

      while ((s <= d[i + 1 ].s) && (e >= d[i + 1].s)) { //是否有覆蓋到下一個線段


應該是這一行,如果i是N-1,就會變成d[N],超出範圍了

 
ZeroJudge Forum