poj2376

来源:互联网 发布:时间煮雨 歌词 知乎 编辑:程序博客网 时间:2024/04/20 03:53

#include<stdio.h>
#include<algorithm>
using namespace std;
struct cow{
int star;
int end;}a[25002];

bool comp(cow a,cow b){
 return a.star<b.star;
}

int main(){
    
 int n,t;
 while(scanf("%d%d",&n,&t)!=EOF){
  int i;
  for(i=0;i<n;i++)
   scanf("%d%d",&a[i].star,&a[i].end);
 
  sort(a,a+n,comp);

  if(a[0].star!=1){ printf("-1/n");}
  else{
  int k=0,next=0;i=0;
  int max_end=0;
  int cover=0;
 
  while(i<n){
                      next=i;
                      max_end=cover;
                 
                  while(next<n&&a[next].star<=cover+1){//求出当前最大的end为max_end;避免有cow的工作时间被完全覆盖!!! 自己和自己也比了一次!!!
                   if(a[next].end>max_end){
                      max_end=a[next].end;
                       i=next;
                   }
                   next++;
                   }
              if(i==next) break;//说明next没有移动,则前一个end为最大的end;但注意第一次肯定next++;除非啊a[0].end==0; 
              cover=max_end;
              k++;
               if(cover>=t){break;} 
              
               i=next;
                   }
 
  if(cover<t){ printf("-1/n");}
  else
  printf("%d/n",k);
}
 }
 return 0;
    }

 

原创粉丝点击