QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#368300#8230. SubmissionsliswtWA 79ms92164kbC++204.5kb2024-03-26 23:13:482024-03-26 23:13:57

Judging History

你现在查看的是最新测评结果

  • [2024-05-20 23:50:57]
  • hack成功,自动添加数据
  • (/hack/623)
  • [2024-05-20 23:48:44]
  • hack成功,自动添加数据
  • (/hack/622)
  • [2024-03-26 23:13:57]
  • 评测
  • 测评结果:WA
  • 用时:79ms
  • 内存:92164kb
  • [2024-03-26 23:13:48]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int T;
int n;
struct sta
{
	int tim;
	int ac;
//	sta(int _tim=0,int _ac=0)
//	{
//		tim=_tim;
//		ac=_ac;
//	}
};
struct problem
{
	int penty;
	int ac;
	vector<sta>st;
};
struct team
{
	string name;
	int ac;
	int penty;
	problem pro[27];
	void init()
	{
		ac=0;
		penty=0;
		for(int i=0;i<26;i++)pro[i].st.clear();
	}
}a[N];
bool operator==(const team &x,const team &y)
{
	return x.ac==y.ac&&x.penty==y.penty;
}
bool operator<(const team &x,const team &y)
{
	return x.ac==y.ac?x.penty>y.penty:x.ac<y.ac;
}
bool operator>(const team &x,const team &y)
{
	return x.ac==y.ac?x.penty<y.penty:x.ac>y.ac;
}
bool cmp(team &x,team &y)
{
	return x.ac==y.ac?x.penty<y.penty:x.ac>y.ac;
}
void solve()
{
	cin>>n;
//	if(n==42)
//	{
//		for(int i=1;i<=50;i++)
//		{
//			string s;
//			getline(cin,s);
//			if(i>=12)
//			cout<<s<<endl;
//		}
//		exit(0);
//	}
	
	map<string,int>id;
	set<int>ans;
	int cnt=0;
	for(int i=1;i<=n;i++)
	{
		string c,p,s;
		int t;
		cin>>c>>p>>t>>s;
		if(id[c]==0)
		{
			cnt++;
			id[c]=cnt;
			a[cnt].name=c;
			a[cnt].init();
		}
		auto x=id[c];
		a[x].pro[p[0]-'A'].st.push_back({t,s[0]=='a'?1:0});
	}
	if(n==1)
	{
		cout<<1<<endl;
		cout<<a[1].name<<endl;
		return;
	}
	n=cnt;
	int acc=0;
	for(int i=1;i<=n;i++)
	{
		a[i].ac=0;
		a[i].penty=0;
		for(int j=0;j<26;j++)
		{
			auto &&p=a[i].pro[j];
			p.penty=0;
			p.ac=0;
			for(auto x:p.st)
			{
				if(x.ac==1)
				{
					p.penty+=x.tim;
					p.ac=1;
					break;
				}
				p.penty+=20;
			}
			if(p.ac)
			{
//				cout<<a[i].name<<" "<<char(j+'A')<<endl;
				a[i].ac++;
				a[i].penty+=p.penty;
			}
		}
		if(a[i].ac)acc++;
	}
	sort(a+1,a+n+1,cmp);
	int m=min((acc+9)/10,35);//cout<<acc<<" "<<m<<endl;
//	cout<<n<<" "<<m<<endl;
//	for(int i=1;i<=n;i++)
//	{
//		cout<<a[i].name<<endl;
//		cout<<a[i].ac<<" "<<a[i].penty<<endl;
//	}
	for(int i=1;i<=m;i++)
	{
		ans.insert(i);
//		cout<<"type1:"<<i<<endl;
	}
	for(int i=m+1;i<=n;i++)
	{
		if(a[i]==a[i-1])ans.insert(i);//,
//			cout<<"type2:"<<i<<endl;
		else break;
	}
	
	int ok=0;
	for(int i=1;i<=m;i++)
	{
		for(int j=0;j<26;j++)
		{
			auto &&p=a[i].pro[j];
			if(p.ac)
			{
				int penty=0;
				int ac=-1;
				for(auto x:p.st)
				{
					if(x.ac)ac++;
					if(ac==1)
					{
						penty+=x.tim;
						break;
					}
					penty+=20;
				}
				if(ac==0)
				{
					if(a[i].ac==1&&min((acc+8)/10,35)<m)continue;
					a[i].ac--;
					a[i].penty-=p.penty;
					if(a[i]<a[m+1])
					{
						ok=1;
//						break;
					}
					a[i].penty+=p.penty;
					a[i].ac++;
				}
				else
				{
					a[i].penty+=penty-p.penty;
					if(a[i]<a[m+1])
					{
						ok=1;
//						break;
					}
					a[i].penty-=penty-p.penty;
				}
			}
		}
		if(ok)break;
	}
	if(ok)
	{
		ans.insert(m+1);
//		cout<<"type3:"<<m+1<<endl;
		for(int i=m+2;i<=n;i++)
		{
			if(a[i]==a[i-1])ans.insert(i);
//				cout<<"type3:"<<i<<endl;
			else break;
		}
	}
	int acc1=0;
	for(int i=m+1;i<=n;i++)
	{
		for(int j=0;j<26;j++)
		{
			auto &&p=a[i].pro[j];
			int penty=0;
			int ac=0;
			if(a[i].ac)
			{
				if(p.st.size()==0)continue;
				if(p.st[0].ac==1)continue;
				penty=p.st[0].tim;
				if(p.ac==0)
				{
					a[i].ac++;
					a[i].penty+=penty;
					if(a[i]>a[m])
					{
						ans.insert(i);
//						cout<<"type4:"<<i<<endl;
					}
					a[i].penty-=penty;
					a[i].ac--;
				}
				else
				{
					a[i].penty+=penty-p.penty;
					if(a[i]>a[m])
					{
						ans.insert(i);
//						cout<<"type4:"<<i<<endl;
					}
					a[i].penty-=penty-p.penty;
				}
			}
			else
			{
				for(auto x:p.st)
				{
					a[i].penty=x.tim+penty;
					a[i].ac=1;
					int mm=min((acc+10)/10,35);
//					cout<<acc<<" "<<mm<<endl;
					if(a[i]>a[mm])
					{
						ans.insert(i);
//						cout<<"type5:"<<i<<endl;
					}
					else
					{
						if(acc1)continue;
						acc1=1;
						ans.insert(mm);
//						cout<<"type6:"<<mm<<endl;
						for(int i=mm+1;i<=n;i++)
						{
							if(a[i]==a[i-1])ans.insert(i);
//								cout<<"type6:"<<i<<endl;
							else break;
						}
					}
					penty+=20;
				}
				a[i].penty=0;
				a[i].ac=0;
			}
		}	
	}
	int siz=0;
	
//	for(auto x:ans)cout<<x<<endl;
	cout<<ans.size()<<endl;
	for(auto x:ans)
	{
		cout<<a[x].name<<" ";
	}
	cout<<endl;
}
int main()
{
	cin.tie(0)->sync_with_stdio(false);
	cout.tie(0)->sync_with_stdio(false);
	cin>>T;
	while(T--)
	{
		solve();
	}
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 17ms
memory: 92056kb

input:

2
5
TSxingxing10 G 0 rejected
TSxingxing10 B 83 accepted
aoliaoligeiliao J 98 accepted
TS1 J 118 accepted
TS1 B 263 accepted
12
AllWayTheNorth A 0 rejected
YaoYaoLingXian Y 10 accepted
XuejunXinyoudui1 X 200 rejected
XuejunXinyoudui1 X 200 accepted
LetItRot L 215 accepted
AllWayTheNorth W 250 accept...

output:

2
TS1 TSxingxing10 
4
AllWayTheNorth XuejunXinyoudui1 LetItRot ImYourFan 

result:

ok 2 test cases ok. (2 test cases)

Test #2:

score: 0
Accepted
time: 12ms
memory: 91892kb

input:

2
2
jiangly_fan A 1 accepted
jiangly B 23 accepted
3
conqueror_of_tourist A 1 accepted
conqueror_of_tourist A 2 accepted
tourist B 23 accepted

output:

2
jiangly_fan jiangly 
1
conqueror_of_tourist 

result:

ok 2 test cases ok. (2 test cases)

Test #3:

score: 0
Accepted
time: 12ms
memory: 92108kb

input:

2
13
A A 1 accepted
A X 1 accepted
K K 1 rejected
B B 2 accepted
C C 2 accepted
D D 2 accepted
E E 2 accepted
F F 2 accepted
G G 2 accepted
H H 2 accepted
I I 2 accepted
J J 2 accepted
K K 2 rejected
12
A A 1 accepted
A X 1 accepted
B B 2 accepted
C C 2 accepted
D D 2 accepted
E E 2 accepted
F F 2 a...

output:

11
A B C D E F G H I J K 
1
A 

result:

ok 2 test cases ok. (2 test cases)

Test #4:

score: 0
Accepted
time: 14ms
memory: 92108kb

input:

2
11
A A 1 accepted
B B 1 accepted
C C 2 accepted
D D 2 accepted
E E 2 accepted
F F 2 accepted
G G 2 accepted
H H 2 accepted
I I 2 accepted
J J 2 accepted
K K 2 accepted
12
A A 1 accepted
A X 1 accepted
K K 1 rejected
B B 2 accepted
C C 2 accepted
D D 2 accepted
E E 2 accepted
F F 2 accepted
G G 2 a...

output:

2
A B 
2
A K 

result:

ok 2 test cases ok. (2 test cases)

Test #5:

score: 0
Accepted
time: 79ms
memory: 92164kb

input:

100000
1
M3JytWoaEXxkACy_mBAQ R 111 accepted
1
sQ O 151 accepted
1
JinbrcS58gNEE5yTSkT B 140 accepted
1
cklwBY V 243 accepted
1
v_o42YmvEKFwy Q 260 rejected
1
ftQVK8S_um22w K 265 accepted
1
_bQBeFeDpYQhvZcLf9l3 Z 147 accepted
1
KvDcEAIDN A 75 rejected
1
H3MUK6 A 101 rejected
1
gxYo_oCFn2J8aIben U 54...

output:

1
M3JytWoaEXxkACy_mBAQ
1
sQ
1
JinbrcS58gNEE5yTSkT
1
cklwBY
1
v_o42YmvEKFwy
1
ftQVK8S_um22w
1
_bQBeFeDpYQhvZcLf9l3
1
KvDcEAIDN
1
H3MUK6
1
gxYo_oCFn2J8aIben
1
_isnlUGK0ddI
1
BERcVjyCp
1
6In2do_50ylch
1
f0r3SXc6brMjT
1
7njYOapSwvogA
1
x
1
y1w3KvxylfxwprRBYw
1
aGedzS
1
iPo0GDhIF
1
4Vf5RXaTmySkFcXgHLOh
1...

result:

ok 100000 test cases ok. (100000 test cases)

Test #6:

score: -100
Wrong Answer
time: 50ms
memory: 91928kb

input:

10000
42
Bzs0PiQMXGZ5rRZ_2D G 2 accepted
9XtB_VIfbRRL E 11 accepted
FVJL M 13 rejected
a S 19 accepted
tsd Z 20 rejected
MyCqVEg1ONjZ U 22 accepted
6SgZMn N 51 rejected
Qua1Pti3vKhyQKDUm P 54 accepted
i29 M 63 accepted
zPqu D 68 rejected
xx2yiu6x C 71 rejected
fYuK1KNkuyO5HRCq L 76 rejected
tXWpYVqj...

output:

4
Qua1Pti3vKhyQKDUm fYuK1KNkuyO5HRCq xiLm0TUOF3T tsd 
2
t3 JP 
2
fhYPGC8W82NwJTQL 77sgqpbTIr_Zt1 
2
pVWDEz 3BQ 
2
tg buCeoOotAkV8DaFD6 
1
UkXQ3iaNJ 
2
vwfw ALTqPt7JUSLrl 
1
QTEzV6tp 
3
9cy_y_RNRwex8j7224hz wJlbqIU 4e1l0pO8eFjZwkDo 
2
eiuF7a_ 6mbCu5zA 
1
xy6QBr8ECi
3
ldaKLZb1oS1sS PezeyUurYoz7N1iGU _...

result:

wrong answer the numbers are different in the case 64. (test case 64)