1 #include <bits/stdc++.h> 2 #define _for(i,a,b) for(int i = (a);i < b;i ++) 3 #define _rep(i,a,b) for(int i = (a);i > b;i --) 4 #define INF 0x3f3f3f3f 5 #define MOD 1000000007 6 #define pb push_back 7 #define maxn 200003 8 typedef long long ll; 9 using namespace std; 10 inline ll read() 11 { 12 ll ans = 0; 13 char ch = getchar(), last = ' '; 14 while(!isdigit(ch)) last = ch, ch = getchar(); 15 while(isdigit(ch)) ans = (ans << 1) + (ans << 3) + ch - '0', ch = getchar(); 16 if(last == '-') ans = -ans; 17 return ans; 18 } 19 inline void write(ll x) 20 { 21 if(x < 0) x = -x, putchar('-'); 22 if(x >= 10) write(x / 10); 23 putchar(x % 10 + '0'); 24 } 25 struct Jin 26 { 27 ll num; 28 ll arr; 29 ll las; 30 ll pri; 31 }; 32 struct cmp 33 { 34 bool operator() (const Jin a,const Jin b) const 35 { 36 if(a.pri!=b.pri) 37 return a.pri < b.pri; 38 else 39 return a.arr > b.arr; 40 } 41 }; 42 vector<Jin> v; 43 priority_queue<Jin,vector<Jin>,cmp> pq; 44 int main() 45 { 46 ll a,b,c,d; 47 while(~scanf("%lld%lld%lld%lld",&a,&b,&c,&d)) 48 v.pb({a,b,c,d}); 49 50 // Jin curJin = v[0]; 51 ll t = 0; 52 _for(i,0,v.size()) 53 { 54 while(!pq.empty() && t+pq.top().las<=v[i].arr) 55 { 56 Jin tmp = pq.top(); 57 pq.pop(); 58 printf("%d %d ",tmp.num,t+tmp.las); 59 t += tmp.las; 60 } 61 if(!pq.empty()) 62 { 63 Jin tmp = pq.top(); 64 pq.pop(); 65 tmp.las = tmp.las-v[i].arr+t; 66 pq.push(tmp); 67 } 68 pq.push(v[i]); 69 t = v[i].arr; 70 } 71 // pq.push(curJin); 72 // t = curJin.arr + curJin.las; 73 // printf("%lld %lld ",curJin.num,t); 74 while(!pq.empty()) 75 { 76 Jin tmp = pq.top(); 77 pq.pop(); 78 t += tmp.las; 79 printf("%lld %lld ",tmp.num,t); 80 } 81 return 0; 82 }