题目描述
有位农夫喜欢把菜种成一排,并且两棵菜之间相距一米。现在农夫种了300米长的菜,但是不幸的是经常被偷。这小偷也有一个奇怪的习惯,总是一次偷一段距离的菜,并且老是忘记已经偷过的地方。
输入
第一行:小偷偷菜的段数N,接下来N行小偷每次偷菜的始末点,范围[0, 300]。
输出
小偷总共偷到的菜的棵数。
样例输入
4 0 4 6 45 3 9 70 100
样例输出
77
#include<stdio.h>
void main()
{
int n,a[30],b[30],i,j,s,t,min,max;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
scanf("%d",&b[i]);
}
if(n>=2)
{
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
t=b[i];
b[i]=b[j];
b[j]=t;
}
min=a[0];
max=b[0];
s=0;
for(i=0;i<n-1;i++)
{
if(b[i]>a[i+1])
{
if(b[i]<b[i+1])
{
max=b[i+1];
}
else
{
a[i+1]=a[i];
b[i+1]=b[i];
}
}
else
{
s+=max-min+1;
min=a[i+1];
max=b[i+1];
}
}
s+=max-min+1;
printf("%d\n",s);
}
else
printf("%d\n",b[0]-a[0]);
}