求hack
查看原帖
求hack
616964
Adolfo_North楼主2024/2/5 20:54

讨论区hack已过

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+7;
struct node{
	string p;
	char xi;
	int sum,c,yang;
}a[N];//每个学生的状态
map<string,int> ma;
int long_run(int id,string li){
	double x=0,y=0,i;
	int cnt=0;
	for(i=0;li[i]>='0'&&li[i]<='9';i++) x=x*10+li[i]-'0';
	for(i=i+1;li[i]>='0'&&li[i]<='9';i++,cnt++) y=y*10+li[i]-'0';
	y=y/pow(10,cnt);
	x+=y;
	if(a[id].xi=='M'){
		if(x<=12.30) return 20;
		else if(x<=13) return 18;
		else if(x<=13.3) return 16;
		else if(x<=14) return 14;
		else if(x<=14.3) return 12;
		else if(x<=15.1) return 10;
		else if(x<=15.5) return 8;
		else if(x<=16.3) return 6;
		else if(x<=17.1) return 4;
		else if(x<=18) return 2;
	}
	else{
		if(x<=6.4) return 20;
		else if(x<=6.57) return 18;
		else if(x<=7.14) return 16;
		else if(x<=7.31) return 14;
		else if(x<=7.50) return 12;
		else if(x<=8.05) return 10;
		else if(x<=8.20) return 8;
		else if(x<=8.35) return 6;
		else if(x<=8.50) return 4;
		else if(x<=9) return 2;
	}
}
struct node2{
	string p;
	int bx,by,bz;
	int yu,ri;
}b[N];
string day;
string p2;
string timb,timn;
double ln;string x;double s;
int r[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
void check(int id){
	ln*=1000;
	if(a[id].xi=='M') {
		if(ln<3000) return;
	}
	else 
		if(ln<1500) return;
	int tx=0,ty=0,i;
	for(i=0;x[i]>='0'&&x[i]<='9';i++) tx=tx*10+x[i]-'0';
	for(i=i+1;x[i]>='0'&&x[i]<='9';i++) ty=ty*10+x[i]-'0';
	tx=tx*60+ty;
	if(tx>270) return;
	int tz;
	tx=ty=tz=0;
	int fx=0,fy=0,fz=0;
	for(i=0;timb[i]>='0'&&timb[i]<='9';i++) fx=fx*10+timb[i]-'0';
	for(i=i+1;timb[i]>='0'&&timb[i]<='9';i++) fy=fy*10+timb[i]-'0';
	for(i=i+1;timb[i]>='0'&&timb[i]<='9'&&i<timb.size();i++) fz=fz*10+timb[i]-'0';
	for(i=0;timn[i]>='0'&&timn[i]<='9';i++) tx=tx*10+timn[i]-'0';
	for(i=i+1;timn[i]>='0'&&timn[i]<='9';i++) ty=ty*10+timn[i]-'0';
	for(i=i+1;timn[i]>='0'&&timn[i]<='9'&&i<timn.size();i++) tz=tz*10+timn[i]-'0';
	double sum=(tx-fx)*3600+(ty-fy)*60+(tz-fz);
	if((ln/s)>1.5) return;
	if((ln/sum)<2||(ln/sum)>5) return;
	int yu=0,ri=0;
	for(int i=4;i<=5;i++) yu=yu*10+day[i]-'0';
	for(int i=6;i<=7;i++) ri=ri*10+day[i]-'0';
	if((yu==b[id].yu&&ri-b[id].ri<=1)||(r[b[id].yu]==b[id].ri&&ri==1&&yu-b[id].yu==1)){
		sum=0;
		if(ri==b[id].ri)
			sum=(fx-b[id].bx)*3600+(fy-b[id].by)*60+(fz-b[id].bz);
		else sum=(fx-b[id].bx)*3600+(fy-b[id].by)*60+(fz-b[id].bz)+86400;
		if(sum<6*60*60) return;
	}
	b[id].yu=yu,b[id].ri=ri,b[id].bx=tx,b[id].by=ty,b[id].bz=tz;
	a[id].yang++;
}
void Run(int id){
	if(a[id].yang>=21) a[id].sum+=10;
	else if(a[id].yang>=19) a[id].sum+=9;
	else if(a[id].yang>=17) a[id].sum+=8;
	else if(a[id].yang>=14) a[id].sum+=7;
	else if(a[id].yang>=11) a[id].sum+=6;
	else if(a[id].yang>=7) a[id].sum+=4;
	else if(a[id].yang>=3) a[id].sum+=2;
	a[id].c+=a[id].yang;
	if(a[id].c>=18) a[id].sum+=5;
	else if(a[id].c>=15) a[id].sum+=4;
	else if(a[id].c>=12) a[id].sum+=3;
	else if(a[id].c>=9) a[id].sum+=2;
	else if(a[id].c>=6) a[id].sum+=1;
}
void Out(int id){
	if(a[id].sum>=95) cout<<"A\n";
	else if(a[id].sum>=90) cout<<"A-\n"; 
	else if(a[id].sum>=85) cout<<"B+\n";
	else if(a[id].sum>=80) cout<<"B\n";
	else if(a[id].sum>=77) cout<<"B-\n";
	else if(a[id].sum>=73) cout<<"C+\n";
	else if(a[id].sum>=70) cout<<"C\n";
	else if(a[id].sum>=67) cout<<"C-\n";
	else if(a[id].sum>=63) cout<<"D+\n";
	else if(a[id].sum>=60) cout<<"D\n";
	else cout<<"F\n";
}
bool cmp(node g,node h){
	return g.p<h.p;
}
int main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int n,m;
	cin>>n;
	for(int i=1;i<=n;i++){
		int lin;
		cin>>a[i].p>>a[i].xi>>a[i].sum;
		string li;
		cin>>li;
		a[i].sum+=long_run(i,li);
		cin>>li;
		if(li=="P") a[i].sum+=10;
		cin>>lin;
		a[i].sum+=lin;
		cin>>a[i].c;
		ma[a[i].p]=i;
	}
	cin>>m;
	for(int i=1;i<=m;i++){
		cin>>day>>p2>>timb>>timn>>ln>>x>>s;
		check(ma[p2]);
	}
	sort(a+1,a+1+n,cmp);
	for(int i=1;i<=n;i++){
		Run(i);
		cout<<a[i].p<<' '<<a[i].sum<<' ';
		Out(i);
	}
	return 0;
}
2024/2/5 20:54
加载中...