The annual GaoDaoKuOI (GDKOI), an interesting programming contest, was held several weeks ago. Uncle Hey had been supposed to be
a judge, but turned out to be a scheduler, which annoyed him very much. What’s going on?
During the contest, contestants might want to go out for a break. (Don’t ask why they have such a privilege. They do have anyway) However,
it is not allowed that two or more contestants went out together. So, they had to go one by one, that is, First Come First Served. In case that
two or more contestants posted their requests at the same time, you could safely assume that the one with the lexicographically smaller
name came earlier.
It’s an annoying job, isn’t it? So, Uncle Hey wants to share the annoyance with you guys here.
Given the record of all requests like this:
T1 C1 D1
T2 C2 D2
…
Tn Cn Dn
Each line describes a request, where Ti represents the posting time of the request, and Ci represents the name of the contestant who posted
the request, and Di means how long will it take for he/she to go out and come back. Note that, requests are given in no order.You’re supposed
to report all events like this: “xxx went out at time yyy” (quotes for clarity), where xxx represents the name of the contestant and yyy is the
time when he/she was permitted to go. You should print the events in the non decreasing order of the happening time. Please refer to the sample for more information.
Input:
First line contains an integer M (M ≤ 6), indicating the number of test cases.
Each test case is in the format like this:
First comes a positive integer N (N ≤ 10000), indicating the number of requests.Then N lines follows. Each line contains a positive integer T, a string C and a positive integer D, representing a request. T ≤ 10000000, D ≤ 1000, C contains no more than 20 lowercase letters.
It’s guaranteed that there are no two requests share a same name.
Output:
For each test case, print all events in the order described as above, one event per line. Print a blank line after each test case.
Sample Input:
2
1
10 lq 5
2
10 lq 5
5 wing 6
Sample Output:
lq went out at time 10
wing went out at time 5
lq went out at time 11
题意:输出每一位选手去休息的时间;简单来说就是排序的问题;
# include<cstdio>
# include<iostream>
# include<algorithm>
using namespace std;
struct rest
{
int a,b;
string s;
}r[11000];
bool cmp(rest n,rest m)
{
if(n.a!=m.a) return n.a<m.a;
else return n.s<m.s;
}
int main()
{
//freopen("a.txt","r",stdin);
int m;
cin>>m;
while(m--)
{
int n,i;
cin>>n;
for(i=0;i<n;i++)
cin>>r[i].a>>r[i].s>>r[i].b;
sort(r,r+n,cmp);
for(i=0;i<n;i++)
{
if(r[i].a+r[i].b>r[i+1].a) r[i+1].a=r[i].a+r[i].b;
cout<<r[i].s<<' '<<"went out at time"<<' '<<r[i].a<<endl;
}
cout<<endl;
}
return 0;
}