比赛 |
20130725暑期B班1测 |
评测结果 |
AAAAAA |
题目名称 |
黑叔 |
最终得分 |
100 |
用户昵称 |
cstdio |
运行时间 |
0.023 s |
代码语言 |
C++ |
内存使用 |
0.62 MiB |
提交时间 |
2012-07-18 10:17:43 |
显示代码纯文本
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("hey.in");//考虑到scanf容易跪
ofstream fout("hey.out");
struct request{
long t;//time,主关键字
char name[22];//名字,次关键字
long d;//出去浮躁的时间
};//一律用long算了
struct request s[10002];
int n;
int compare(char ch1[],char ch2[]){//ch1大返回1,ch2大返回-1,相等返回0
int i=0;
while('a'<=ch1[i]&&ch1[i]<='z'&&'a'<=ch2[i]&&ch2[i]<='z'){
if(ch1[i]>ch2[i]) return 1;
if(ch1[i]<ch2[i]) return -1;
i++;
}
return 0;
}
void qqsort(int low,int high){
int i,j;
struct request x,temp;
i=low,j=high,x=s[low];
while(i<=j){
while((s[i].t<x.t||(s[i].t==x.t&&compare(x.name,s[i].name)==1))&&i<=high) i++;//找到需要交换的记录,条件只能为<
while((s[j].t>x.t||(s[j].t==x.t&&compare(s[j].name,x.name)==1))&&j>=0) j--;//找到需要交换的记录,条件只能为>
if(i<=j){//交换记录
temp=s[i];
s[i]=s[j];
s[j]=temp;
i++;
j--;//i++和j--放到这里:此乃关键!
}
}
if(low<j) qqsort(low,j);
if(i<high) qqsort(i,high);
//递归快排
}
void hangout(void){//一共n个犇
int i;
long end=0;
for(i=0;i<n;i++){
if(end<=s[i].t){//直接去
fout<<s[i].name<<" went out at time "<<s[i].t<<endl;//祈使句本来应该用一般现在时的......
end=s[i].t+s[i].d;
}
else{//得等
fout<<s[i].name<<" went out at time "<<end<<endl;
end+=s[i].d;
}
}
}
int main(){
fin>>n;
int i;
for(i=0;i<n;i++){
fin>>s[i].t>>s[i].name>>s[i].d;//读入请求
}
qqsort(0,n-1);
hangout();
fin.close();
fout.close();
return 0;
}