以下為通過高中生程式解題系統 AC (Accepted) 的 C 語言程式參考解答
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | #include <stdio.h> #include <stdlib.h> #define MAX 10000 int main() { int n=0; signed int line[MAX][2]={{0}}; while(scanf(" %d",&n)!=EOF){ for(int i=0 ; i<n ; i++) { scanf(" %d %d",&line[i][0],&line[i][1]); for(int j=0; j<i ; j++) { if(line[i][0]<line[j][0]) { int tmp[2]={line[i][0],line[i][1]}; for(int k=i; k>j ; --k) { line[k][0] = line[k-1][0]; line[k][1] = line[k-1][1]; } line[j][0]=tmp[0]; line[j][1]=tmp[1]; break; } } } int start=line[0][0], end=line[0][1]; int length=0; for(int i=1; i<n ; i++) { if(line[i][0]<=end) { if(line[i][1]>end) end = line[i][1]; } else{ length += (end-start); start=line[i][0]; end=line[i][1]; } } length += (end-start); printf("%d\n",length); } return 0; } |
沒有留言:
張貼留言