QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#878897#9549. The Magicianucup-team134#RE 5ms11816kbC++141.9kb2025-02-01 18:39:112025-02-01 18:39:11

Judging History

This is the latest submission verdict.

  • [2025-02-01 18:39:11]
  • Judged
  • Verdict: RE
  • Time: 5ms
  • Memory: 11816kb
  • [2025-02-01 18:39:11]
  • Submitted

answer

#include <bits/stdc++.h>

#define ll long long
#define pb push_back
#define f first
#define s second
#define sz(x) (int)(x).size()
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define ios ios_base::sync_with_stdio(false);cin.tie(NULL)
#define ld long double

using namespace std;

mt19937 rng(time(NULL));

const int N=19,K=1<<6;
bool vis[N][N][N][N][K];
int ans=0;
void dfs(int a,int b,int c,int d,int msk){
	if(vis[a][b][c][d][msk])return;
	vis[a][b][c][d][msk]=1;
	ans=max(ans,a/5+b/5+c/5+d/5);
	vector<int> cn={a,b,c,d};
	for(int j=0;j<4;j++){
		if(msk&(1<<j)){
			for(int i1=0;i1<4;i1++){
				for(int i2=0;i2<4;i2++){
					for(int i3=0;i3<4;i3++){
						cn[i1]--;
						cn[i2]--;
						cn[i3]--;
						if(cn[i1]>=0&&cn[i2]>=0&&cn[i3]>=0){
							cn[j]+=3;
							dfs(cn[0],cn[1],cn[2],cn[3],msk^(1<<j));
							cn[j]-=3;
						}
						cn[i1]++;
						cn[i2]++;
						cn[i3]++;
					}
				}
			}
		}
	}
	// Lovers
	if(msk&(1<<4))
		for(int i=0;i<4;i++){
			for(int j=0;j<4;j++){
				cn[i]--;
				if(cn[i]>=0){
					cn[j]++;
					dfs(cn[0],cn[1],cn[2],cn[3],msk^(1<<4));
					cn[j]--;
				}
				cn[i]++;
			}
		}
	// Death
	if(msk&(1<<5))
		for(int i=0;i<4;i++){
			for(int j=0;j<4;j++){
				cn[i]--;
				if(cn[i]>=0&&cn[j]>=0){
					cn[j]++;
					dfs(cn[0],cn[1],cn[2],cn[3],msk^(1<<4));
					cn[j]--;
				}
				cn[i]++;
			}
		}
}
void test(){
	memset(vis,0,sizeof vis);
	ans=0;
	int n;
	cin >> n;
	vector<int> cnt(4);
	vector<char> suit={'D','C','H','S'};
	for(int i=0;i<n;i++){
		string s;
		cin >> s;
		for(int j=0;j<4;j++){
			if(s[1]==suit[j]){
				cnt[j]++;
			}
		}
	}
	int msk=0;
	for(int j=0;j<6;j++){
		int t;
		cin >> t;
		if(t){
			msk^=(1<<j);
		}
	}
	dfs(cnt[0],cnt[1],cnt[2],cnt[3],msk);
	cout << ans << endl;
}
int main()
{
	int t;
	cin >> t;
	while(t--)test();
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 2ms
memory: 11756kb

input:

4
5
2H 3H 4H 5H 6D
1 1 1 1 0 0
5
2S 3S 4D 5C 6D
0 0 1 0 1 1
5
2S 3S 4D 5C 6D
0 0 1 0 1 0
13
AS 2S 3S 4S 5H 6H 7H 8H 9H TH JH QH KH
0 0 0 0 0 1

output:

1
1
0
2

result:

ok 4 lines

Test #2:

score: 0
Accepted
time: 5ms
memory: 11816kb

input:

13
10
AD 2D 3D 4D 5D 6D 7D 8D 9D TD
0 0 1 0 0 0
10
AH 2D 3D 4D 5D 6D 7D 8D 9D TD
0 0 1 0 0 0
10
AH 2H 3D 4D 5D 6D 7D 8D 9D TD
0 0 1 0 0 0
10
AH 2H 3H 4D 5D 6D 7D 8D 9D TD
0 0 1 0 0 0
10
AH 2H 3H 4H 5D 6D 7D 8D 9D TD
0 0 1 0 0 0
10
AS 2S 3S 4S 5S 6S 7S 8S 9S TS
0 1 0 0 0 0
10
AC 2S 3S 4S 5S 6S 7S 8S ...

output:

2
1
2
2
2
2
1
2
2
2
0
0
0

result:

ok 13 lines

Test #3:

score: -100
Runtime Error

input:

2
52
AH AD AC AS 2H 2D 2C 2S 3H 3D 3C 3S 4H 4D 4C 4S 5H 5D 5C 5S 6H 6D 6C 6S 7H 7D 7C 7S 8H 8D 8C 8S 9H 9D 9C 9S TH TD TC TS JH JD JC JS QH QD QC QS KH KD KC KS
1 1 1 1 1 1
52
AH AD AC AS 2H 2D 2C 2S 3H 3D 3C 3S 4H 4D 4C 4S 5H 5D 5C 5S 6H 6D 6C 6S 7H 7D 7C 7S 8H 8D 8C 8S 9H 9D 9C 9S TH TD TC TS JH J...

output:


result: