QOJ.ac
QOJ
ID | Submission ID | Problem | Hacker | Owner | Result | Submit time | Judge time |
---|---|---|---|---|---|---|---|
#1246 | #780524 | #9549. The Magician | Imakf | Imakf | Success! | 2024-11-25 11:23:29 | 2024-11-25 11:23:32 |
Details
Extra Test:
Wrong Answer
time: 0ms
memory: 3668kb
input:
4 18 2C AC 3H 2H AH 3D 2D AD TS 9S 8S 7S 6S 5S 4S 3S 2S AS 1 0 0 1 1 1 25 AC 3H 2H AH 8D 7D 6D 5D 4D 3D 2D AD KS QS JS TS 9S 8S 7S 6S 5S 4S 3S 2S AS 0 1 0 1 1 1 29 4C 3C 2C AC 7H 6H 5H 4H 3H 2H AH 9D 8D 7D 6D 5D 4D 3D 2D AD 9S 8S 7S 6S 5S 4S 3S 2S AS 1 1 1 0 1 1 25 3C 2C AC 3H 2H AH 9D 8D 7D 6D 5D 4...
output:
3 5 6 5
result:
wrong answer 3rd lines differ - expected: '5', found: '6'
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#780524 | #9549. The Magician | Imakf | WA | 0ms | 3708kb | C++23 | 3.3kb | 2024-11-25 11:23:02 | 2024-11-25 11:32:59 |
answer
// https://codeforces.com/gym/105540/submission/292569443
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define inf INT32_MAX
#define endl '\n'
int t1,t2,t3,t4,t5,t6,n;//方块 梅花 红桃 黑桃 恋人 死神
string s1;
struct node{
int sum,change;
friend bool operator < (node a,node b){
if(a.change == b.change){
return a.sum < b.sum;
}
return a.change < b.change;
}
} a[4];//C D H S 梅花 方块 红桃 黑桃
void init(){
for(int i = 0;i <= 3;i ++){
a[i].sum = a[i].change = 0;
}
}
void solve(){
cin >> n;
init();
for(int i = 1;i <= n;i ++){
cin >> s1;
if(s1[1] == 'C'){
a[0].sum ++;
}
if(s1[1] == 'D'){
a[1].sum ++;
}
if(s1[1] == 'H'){
a[2].sum ++;
}
if(s1[1] == 'S'){
a[3].sum ++;
}
}
cin >> a[1].change >> a[0].change >> a[2].change >> a[3].change >> t5 >> t6;
int ans = 0;
ans += (a[0].sum / 5) + (a[1].sum / 5) + (a[2].sum / 5) + (a[3].sum / 5);
a[0].sum %= 5,a[1].sum %= 5,a[2].sum %= 5,a[3].sum %= 5;
sort(a ,a + 4);
for(int i = 3;i >= 0;i --){
if(a[i].change) continue;
if(a[i].sum == 4 && (t5 || t6)){
for(int j = 0;j < i; j ++){
if(a[j].sum) {
a[j].sum --;
break;
}
}
if(t5){
ans ++;
t5 = 0;
a[i].sum = 0;
}
else{
ans ++;
t6 = 0;
a[i].sum = 0;
}
}
}
sort(a ,a + 4);
for(int i = 3;i >= 0;i --){//有问题
int res = min(5 - a[i].sum,(int)3);
if(!a[i].change) continue;
for(int j = 0;j < i;j ++){
if(res == 0) break;
if(i == j) continue;
int temp = min(res,a[j].sum);
res -= temp;
a[j].sum -= temp;
a[i].sum += temp;
if(a[i].sum == 5){
ans ++;
a[i].sum = 0;
break;
}
}
}
sort(a,a + 4);
for(int i = 3;i >= 0;i --){
if(a[i].sum < 3) continue;
if(!t5 && !t6) break;
for(int j = 0;j < i;j ++){
if(a[j].sum){
if(t5){
t5 = 0;
a[j].sum --;
a[i].sum ++;
}
if(a[i].sum == 5){
a[i].sum = 0;
ans ++;
break;
}
if(a[j].sum == 0) continue;
if(t6){
t6 = 0;
a[j].sum --;
a[i].sum ++;
}
if(a[i].sum == 5){
a[i].sum = 0;
ans ++;
break;
}
}
}
}
cout << ans << '\n';
}
signed main(){
int tt = 1;
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> tt;
while(tt --){
solve();
}
}