乒乓球错误

#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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值