Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct interval { int st,dr; } v[10002],u[10002];
- int comp(interval a, interval b)
- {
- return a.st<b.st;
- }
- #include <iostream>
- #include <fstream>
- #include <algorithm>
- using namespace std;
- ifstream f("bunicul.in");
- ofstream g("bunicul.out");
- int m,n,r,s,k,d,p,i,x;
- int main()
- {
- f>>m>>n>>r;
- for(i=1;i<=n;i++)
- {
- f>>v[i].st>>v[i].dr;
- s+=v[i].dr-v[i].st+1;
- }
- s=m-s+1;
- g<<s<<'\n';
- sort(v+1,v+n+1,comp);
- v[0].dr=-1;
- v[n+1].st=m+1;
- i=1;
- for(k=1;k<=r;k++)
- {
- f>>x;
- d=v[i].st-v[i-1].dr-1;
- while(d<x&&i<=n) {
- i++;
- d=v[i].st-v[i-1].dr-1;
- }
- if(x<=d)
- {
- u[++p].st=v[i-1].dr+1;
- u[p].dr=u[p].st+x-1;
- v[i-1].dr+=x;
- }
- else break;
- }
- if(p<r) g<<p<<" "<<u[p].dr;
- else for(i=1;i<=r;i++)
- g<<u[i].st<<" "<<u[i].dr<<" ";
- g.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement