Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<cstdio>
- #include<algorithm>
- using namespace std;
- struct interval
- {
- int in;
- int sf;
- };
- bool cmp(interval a, interval b)
- {
- return a.in<b.in;
- }
- interval v[1000];
- int max(int a, int b)
- {
- if(a>b)return a;
- if(b>a)return b;
- return a;
- }
- int main()
- {
- freopen("acoperire.in","r",stdin);
- freopen("acoperire.out","w",stdout);
- int st,dr,n;
- scanf("%d%d",&st,&dr); // capetele intervalului
- scanf("%d",&n); // nr intervale mici
- for(int i=1;i<=n;i++)
- scanf("%d%d",&v[i].in,&v[i].sf); // intervale mici
- int reper=st, departe=st-1,nr=1;
- sort(v+1,v+n+1,cmp);
- bool ok=0;
- for(int i=1;i<=n;i++)
- {
- if(v[i].in<=reper)
- departe=max(departe,v[i].sf);
- else
- if(v[i].in>departe)
- {
- printf("-1");
- ok=1;
- break;
- }
- else
- {
- nr++;
- reper=departe;
- departe=v[i].sf;
- }
- if(departe>=dr)
- break;
- }
- if(ok==0)
- if(v[n].sf<st)
- {
- printf("-1");
- ok=1;
- }
- if(ok==0)
- printf("%d",nr);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement