POJ 2376

  1 #include <iostream>
  2 #include <cstdio>
  3 #include <cmath>
  4 #include <cstring>
  5 #include <algorithm>
  6 #include <queue>
  7 #include <stack>
  8 #include <vector>
  9 using namespace std;
 10 struct node
 11 {
 12     int x,y;
 13 }a[25010];
 14 bool cmp(const node &a,const node &b)
 15 {
 16     if(a.x==b.x)
 17     return a.y>b.y;
 18     return a.x<b.x;
 19 }
 20 int main(int argc, char *argv[])
 21 {
 22     
 23     int n,t,sum=0,end;
 24     scanf("%d%d",&n,&t);
 25     for(int i=0;i<n;i++)
 26         scanf("%d%d",&a[i].x,&a[i].y);
 27      sort(a,a+n,cmp);
 28      if(a[0].x!=1)
 29      {
 30          printf("-1\n");
 31          return 0;
 32      }
 33      end=a[0].y;
 34      sum++;
 35      int ma=end;
 36      int k=1;
 37      int i;
 38      while(end<t)
 39      {
 40          for(i=k;a[i].x<=end+1;i++)
 41               if(a[i].y>ma)
 42                   ma=a[i].y;
 43                   
 44           if(ma==end)
 45           {
 46              printf("-1\n");
 47              return 0;
 48           }
 49           sum++;
 50          end=ma;
 51           if(end==t)
 52           break;
 53           k=i;
 54           if(k>=n)
 55           break;
 56      }
 57      if(end==t)
 58      printf("%d\n",sum);
 59      else
 60      printf("-1\n");
 61     return 0;
 62 }#include <iostream>
 63 #include <cstdio>
 64 #include <cmath>
 65 #include <cstring>
 66 #include <algorithm>
 67 #include <queue>
 68 #include <stack>
 69 #include <vector>
 70 using namespace std;
 71 struct node
 72 {
 73     int x,y;
 74 }a[25010];
 75 bool cmp(const node &a,const node &b)
 76 {
 77     if(a.x==b.x)
 78     return a.y>b.y;
 79     return a.x<b.x;
 80 }
 81 int main(int argc, char *argv[])
 82 {
 83     
 84     int n,t,sum=0,end;
 85     scanf("%d%d",&n,&t);
 86     for(int i=0;i<n;i++)
 87         scanf("%d%d",&a[i].x,&a[i].y);
 88      sort(a,a+n,cmp);
 89      if(a[0].x!=1)
 90      {
 91          printf("-1\n");
 92          return 0;
 93      }
 94      end=a[0].y;
 95      sum++;
 96      int ma=end;
 97      int k=1;
 98      int i;
 99      while(end<t)
100      {
101          for(i=k;a[i].x<=end+1;i++)
102               if(a[i].y>ma)
103                   ma=a[i].y;
104                   
105           if(ma==end)
106           {
107              printf("-1\n");
108              return 0;
109           }
110           sum++;
111          end=ma;
112           if(end==t)
113           break;
114           k=i;
115           if(k>=n)
116           break;
117      }
118      if(end==t)
119      printf("%d\n",sum);
120      else
121      printf("-1\n");
122     return 0;
123 }

 

posted @ 2018-09-27 16:11  huluxin  阅读(140)  评论(0编辑  收藏  举报