#include<bits/stdc++.h>
using namespace std;
int table;
int e;//记录有多少个vip
class dui{
public:
int hour;
int min;
int s;
int time;//打多久
int flag;//do you have vip
int sf;//是否已经打过了
int deng;//how long do you wait;
dui(){
hour=0;
min=0;
s=0;
time=0;
flag=0;
sf=0;
deng =0;
}
};
class zhuo{
public:
int cishu;//使用次数
int jssjh;//结束时间
int jssjm;
int jssjs;
bool vip;
zhuo(){
cishu=0;
jssjh=0;
jssjm=0;
jssjs=0;
vip=0;
}
};
istream &operator>>(istream &is,dui &a){
is>>a.hour;
char ch;
cin>>ch;
is>>a.min;
is>>ch;
is>>a.s;
is>>a.time;
is>>a.flag;
if(a.flag==1){
e++;
}
}
void Print(dui *a,int i){
//cout<<" sdfsdf "<<i<<endl;
//cout<<a[0].hour<<":"<<a[0].hour<<":"<<a[0].s<<endl;
printf("%02d:%02d:%02d ",a[i].hour,a[i].min,a[i].s);
}
void Printf(zhuo *a,int i){
//cout<<a[0].hour<<":"<<a[0].hour<<":"<<a[0].s<<endl;
printf("%02d:%02d:%02d ",a[i].jssjh,a[i].jssjm,a[i].jssjs);
}
bool compare(dui a,dui b){
if(a.hour<b.hour){
return true;
}
else if(a.hour==b.hour&&a.min<b.min){
return true;
}
else if(a.hour==b.hour&&a.min==b.min&&a.s<b.s){
return true;
}
else return false;
}
//void copy(dui *a,dui *b,int i,int w){
// b[w].hour=a[i].hour;
// b[w].min=a[i].
//}
bool operator>(dui &a,zhuo &b){
//cout<<a.hour<<" "<<a.min<<" "<<a.s<<" "<<b.jssjh<<" "<<b.jssjm<<" "<<b.jssjs<<endl;
if(a.hour>b.jssjh){
return true;
}
else if(a.hour==b.jssjh&&a.min>b.jssjm){
return true;
}
else if(a.hour==b.jssjh&&a.min==b.jssjm&&a.s>=b.jssjs){
return true;
}
// cout<<"shibai"<<endl;
return false;
}
bool operator<(dui &a,zhuo &b){
if(a.hour<b.jssjh){
return true;
}
else if(a.hour==b.jssjh&&a.min<b.jssjm){
return true;
}
else if(a.hour==b.jssjh&&a.min==b.jssjm&&a.s<=b.jssjs){
return true;
}
return false;
}
bool operator<(dui &a,dui &b){
if(a.hour<b.hour){
return true;
}
else if(a.hour==b.hour&&a.min<b.min){
return true;
}
else if(a.hour==b.hour&&a.min==b.min&&a.s<b.s){
return true;
}
return false;
}
bool operator<(zhuo &a,zhuo &b){
if(a.jssjh<b.jssjh){
return true;
}
else if(a.jssjh==b.jssjh&&a.jssjm<b.jssjm){
return true;
}
else if(a.jssjh==b.jssjh&&a.jssjm==b.jssjm&&a.jssjs<b.jssjs){
return true;
}
return false;
}
bool operator==(dui &a,zhuo &b){
// if(a.hour>b.jssjh){
// return true;
// }
// else if(a.hour==b.jssjh&&a.min>b.jssjm){
// return true;
// }
if(a.hour==b.jssjh&&a.min==b.jssjm&&a.s==b.jssjs){
return true;
}
return false;
}
bool operator==(zhuo &a,zhuo &b){
// if(a.hour>b.jssjh){
// return true;
// }
// else if(a.hour==b.jssjh&&a.min>b.jssjm){
// return true;
// }
if(a.jssjh==b.jssjh&&a.jssjm==b.jssjm&&a.jssjs==b.jssjs){
return true;
}
return false;
}
void da(dui *a,int i,zhuo *c,int j){
// int cc,vv;
// vv=c[j].jssjh;
// cc=c[j].jssjm+a[i].time;
// if(cc>=60){
// vv+=cc/60;
// cc%=60;
// }
// if(vv>=21){
// return;
// }
c[j].cishu++;
Print(a,i);
Printf(c,j);
a[i].sf=1;
int h=c[j].jssjh-a[i].hour;
int m=c[j].jssjm-a[i].min;
int s=c[j].jssjs-a[i].s;
int sum=h*60+m;
if(s>=30){
sum++;
}
if(s<0){
sum--;
}
cout<<sum<<endl;
c[j].jssjm+=a[i].time;
if(c[j].jssjm>=60){
c[j].jssjh+=c[j].jssjm/60;
c[j].jssjm%=60;
}
// c[j].jssjh=vv;
// c[j].jssjm=cc;
return;
}
int re(zhuo *b){
int j=0;
for(int i=1;i<table;i++){
if(b[i]<b[j]){
j=i;
}
else if(b[i]==b[j]){
if(b[i].vip==1&&b[j].vip!=1){
j=i;
}
}
}
return j;
}
int re1(zhuo *b){
int j=0;
for(int i=1;i<table;i++){
if(b[i]<b[j]){
j=i;
}
// else if(b[i]==b[j]){
// if(b[i].vip==1&&b[j].vip!=1){
// j=i;
// }
// }
}
return j;
}
//bool Find(dui *a,int ee,zhuo &c,int j){
// for(int i=j;i<table;i++){
// if(c[i].vip==1){
// if(a[ee]>c[i]){
// *e=i;
// return true;
// }
// }
// }
// return false;
//}
int main(){
e=0;
int n;
cin>>n;
dui *a=new dui[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
dui *vip=new dui[e];
cin>>table;
zhuo *c=new zhuo[table];
int numv;
cin>>numv;
//int *num=new int[numv];
for(int i=0;i<numv;i++){
int w;
cin>>w;
c[w-1].vip=1;
}
sort(a,a+n,compare);
int w=0;
// for(int i=0;i<e;i++){
// if(a[i].flag==1){
// copy(a,vip,i,w);
// }
// }
//cout<<"numv "<<numv<<endl;
int ff=0;
for(int i=0;i<n;i++){
int f=1;
if(a[i].sf==0){
// if(a[i].flag==1){
// bool j=0;
// j=find(a[i],c);
//
// }
for(int j=0;j<table;j++){
// if(i==1){
// cout<<"j:"<<j<<endl;
// }
if(c[j].jssjh>=21){
continue;
}
if(a[i]>c[j]){
if(a[i].flag==1){
//cout<<a[i].hour<<' '<<a[i].min<<endl;
int w=j;
int e=-1;
for(;w<table;w++){
if(c[w].vip==1){
if(a[i]>c[w]){
e=w;
break;
}
}
}
if(e!=-1){
j=e;
}
}
// if(a[i].min+a[i].time>=60&&a[i].hour==20){
// continue;
// }
c[j].cishu++;
c[j].jssjh=a[i].hour;
c[j].jssjm=a[i].min;
c[j].jssjs=a[i].s;
//cout<<"< ";
Print(a,i);
Printf(c,j);
a[i].sf=1;
// int h=c[j].jssjh-a[i].hour;
// int m=c[j].jssjm-a[i].min;
// int s=c[j].jssjs-a[i].s;
// int sum=h*60+m;
// if(s>=30){
// sum++;
// }
// if(s<0){
// sum--;
// }
c[j].jssjm=a[i].min+a[i].time;
if(c[j].jssjm>=60){
c[j].jssjh+=c[j].jssjm/60;
c[j].jssjm%=60;
}
cout<<0<<endl;
f=0;
break;
}
else if(a[i]==c[j]){
if(a[i].flag==1){
//cout<<a[i].hour<<' '<<a[i].min<<endl;
int w=j;
int e=-1;
for(;w<table;w++){
if(c[w].vip==1){
if(a[i]==c[w]){
e=w;
break;
}
}
}
if(e!=-1){
j=e;
}
}
// if(a[i].min+a[i].time>=60&&a[i].hour==20){
// continue;
// }
c[j].cishu++;
//cout<<"== ";
Print(a,i);
Printf(c,j);
a[i].sf=1;
int sum=0;
c[j].jssjm=a[i].min+a[i].time;
if(c[j].jssjm>=60){
c[j].jssjh+=c[j].jssjm/60;
c[j].jssjm%=60;
}
cout<<sum<<endl;
f=0;
break;
}
}
if(f==1){
// if(i==1){
// cout<<"i==1"<<endl;
// }
// cout<<"I love this world"<<endl;
for(int j=0;;){
j=0;
if(a[i].sf==1){
break;
}
// int j=0;
if(a[i].flag==1)
j=re(c);
else{
j=re1(c);
}
// if(i==3){
// cout<<j<<endl;
// }
//cout<<"j "<<j<<endl;
if(c[j].jssjh>=21){
break;
}
if(c[j].vip==1){
ff=0;
for(int r=i;r<n;r++){
if(a[r].flag==1){
if(a[r]<c[j]){
//cout<<"> ";
da(a,r,c,j);
ff=1;
j=0;
break;
}
else if(a[r]==c[j]){
da(a,r,c,j);
ff=1;
j=0;
break;
}
else{
break;
}
}
}
if(ff==1){
continue;
}
//cout<<">> ";
da(a,i,c,j);
break;
}
else{
//j=re(c);
da(a,i,c,j);
break;
}
}
}
}
}
int i;
for(i=0;i<table-1;i++){
cout<<c[i].cishu<<" ";
}
cout<<c[i].cishu<<endl;
//Print(a);
}
//10
//20:52:00 10 0
//08:00:00 20 0
//08:02:00 30 0
//20:51:00 10 0
//08:10:00 30 0
//08:00:00 10 1
//20:40:00 13 0
//08:01:30 15 1
//20:53:00 10 1
//20:54:00 10 0
//3 1
//2
07-17
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交