題目描述
曹操平定北方以後,公元208年,率領大軍南下,進攻劉表。他的人馬還沒有到荊州,劉表已經病死。他的兒子劉琮聽到曹軍聲勢浩大,嚇破了膽,先派人求降了。
孫權任命周瑜爲都督,撥給他三萬水軍,叫他同劉備協力抵抗曹操。
隆冬的十一月,天氣突然回暖,颳起了東南風。
沒想到東吳船隊離開北岸大約二里距離,前面十條大船突然同時起火。火借風勢,風助火威。十條火船,好比十條火龍一樣,闖進曹軍水寨。那裏的船艦,都擠在一起,又躲不開,很快地都燒起來。一眨眼工夫,已經燒成一片火海。
曹操氣急敗壞的把你找來,要你鑽入火海把連環線上着火的船隻的長度統計出來!
輸入
第一行:N
以後N行,每行兩個數:Ai Bi(表示連環線上着火船隻的起始位置和終點,-109<=Ai,Bi<=109)
輸出
輸出着火船隻的總長度
樣例輸入
3
-1 1
5 11
2 9
樣例輸出
11
提示
n<=20000
如果Ai=Bi是一個點則看作沒有長度
此題毫無亮點,按部就班即可。
附上代碼:
#include<stdio.h>
typedef struct
{
int start;
int end;
} Boat;
int main()
{
int n,i,j;
scanf("%d",&n);
Boat boat[n],temp;
for(i = 0; i < n; i++)
{
scanf("%d %d",&boat[i].start,&boat[i].end);
}
for(i = 0; i < n - 1; i++)
{
for(j = i + 1; j < n; j++)
{
if(boat[i].start > boat[j].start)
{
temp = boat[i];
boat[i] = boat[j];
boat[j] = temp;
}
}
}
for(i = 0; i < n-1; i++)
{
for(j = i + 1; j < n; j++)
{
if(boat[i].start == boat[j].start)
{
if(boat[i].end <= boat[j].end)
{
boat[i].start = boat[i].end = 0;
}
else
{
boat[j].end = boat[i].end;
boat[i].start = boat[j].end = 0;
}
}
else
{
if(boat[i].end >= boat[j].start&&boat[i].end <= boat[j].end)
{
boat[j].start = boat[i].start;
boat[i].start = boat[i].end = 0;
}
else if(boat[i].end > boat[j].end)
{
boat[j] = boat[i];
boat[i].start = boat[i].end = 0;
}
}
}
}
for(i = 0,j = 0; i < n; i++)
{
j += boat[i].end - boat[i].start;
}
printf("%d",j);
return 0;
}