站外题求助
查看原帖
站外题求助
756900
When_can_I_be楼主2022/9/2 20:46

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;
}
2022/9/2 20:46
加载中...