RT。
题目描述:
三个农民每天清晨 5 点起床,然后去牛棚给三头牛挤奶。
第一个农民在 300 秒 (从 5 点开始计时) 给他的牛挤奶,一直到 1000 秒。第二个农民在 700 秒开始,在 1200 秒结束。第三个农民在 1500 秒开始,2100 秒结束。
期间最长的至少有一个农民在挤奶的连续时间为 900 秒 (从 300 秒到 1200 秒),而最长的无人挤奶的连续时间(从挤奶开始一直到挤奶结束)为 300 秒 (从 1200 秒到 1500 秒)。
你的任务是编一个程序,读入一个有 n 个农民挤 n 头牛的工作时间列表,计算以下两点(均以秒为单位):
最长至少有一人在挤奶的时间段。
最长的无人挤奶的时间段。(从有人挤奶开始算起) 代码(全WA):
#include<iostream>
using namespace std;
int main(){
int n;
long long with=0,without=0;
cin>>n;
int start[n],end[n];
for(int i=0;i<n;i++){
cin>>start[i];
cin>>end[i];
}
for(int i=0;i<n;i++){
for(int j=0;j<(n-1);j++){
int num=0;
if(end[j+1]>=start[j+1])
num+=(start[j+1]-start[j]);
else{
num+=end[j+1]-start[j+1];
}
if(num>with)
with=num;
}
for(int j=0;j<(n-1);j++){
if(end[j]<start[j+1])
if(start[j+1]-end[j]>without)
without=start[j+1]-end[j];
}
}
cout<<with<<" "<<without;
return 0;
}