QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#723070 | #5607. Cribbage On Steroids | TheZone | AC ✓ | 0ms | 3840kb | C++20 | 5.2kb | 2024-11-07 21:06:29 | 2024-11-07 21:06:29 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
#define pb push_back
const ld pi = 3.14159265358979323846;
const int mod = 998244353;
const ll INF = 1e18;
template<typename T>
T chmax(T a, T b) {
return a > b ? a : b;
}
template<typename T>
T chmin(T a, T b) {
return a > b ? b : a;
}
const int N = (int)1e4 + 1, M = N * 2;
void solve() {
int n;
cin >> n;
vector<int> a, ap;
for (int i = 0; i < n; i++) {
char c;
cin >> c;
if (c == 'T' || c == 'J' || c == 'Q' || c == 'K') a.pb(10);
else if (c == 'A') a.pb(1);
else a.pb(c - '0');
if(c == 'A') ap.pb(1);
else if(c == 'T') ap.pb(10);
else if(c == 'J') ap.pb(11);
else if(c == 'Q') ap.pb(12);
else if(c == 'K') ap.pb(13);
else ap.pb(c - '0');
}
map<int, int> mp;
for(int i = 0; i < a.size(); i++){
mp[ap[i]]++;
}
sort(a.begin(), a.end());
sort(ap.begin(), ap.end());
auto get15= [&]() -> ll{
ll f[16];
memset(f, 0, sizeof f);
f[0] = 1;
for(int i = 0; i < a.size(); i++){
for(int j = 15; j >= a[i]; j--){
f[j] += f[j - a[i]];
}
}
return f[15] * 2;
};
auto pairs = [&]() -> ll{
ll qwq = 0;
for(int i = 1; i <= 13; i++){
if(mp[i] >= 2){
qwq += mp[i] * 1ll * (mp[i] - 1);
}
}
return qwq;
};
auto runs = [&]() -> ll{
ll qwq = 0;
vector<vector<int>> b;
for(int i = 0; i < a.size(); i++){
if(b.empty() || b.back()[0] != ap[i]){
b.pb({ap[i], 1});
}
else{
b.back()[1]++;
}
}
ll owo = 1, c = 0;
for(int i = 0; i < b.size(); i++){
if(i){
if(b[i][0] - b[i - 1][0] != 1){
if(c > 2){
qwq += owo * c;
}
c = 1;
owo = b[i][1];
}
else{
c++;
owo *= b[i][1];
}
}
else{
owo = b[i][1];
c++;
}
}
if(c > 2){
qwq += owo * c;
}
return qwq;
};
cout << get15() + pairs() + runs() << endl;
}
int main() {
// freopen(".in", "r", stdin);
// freopen(".out", "w", stdout);
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int t = 1;
// cin >> t;
while(t--){
solve();
}
return 0;
}
/*#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
#define pb push_back
const ld pi = 3.14159265358979323846;
const int mod = 998244353;
const ll INF = 1e18;
template<typename T>
T chmax(T a, T b) {
return a > b ? a : b;
}
template<typename T>
T chmin(T a, T b) {
return a > b ? b : a;
}
const int N = (int)1e4 + 1, M = N * 2;
void solve() {
int n;
cin >> n;
vector<int> a, ap;
for (int i = 0; i < n; i++) {
char c;
cin >> c;
if (c == 'T' || c == 'J' || c == 'Q' || c == 'K') a.pb(10);
else if (c == 'A') a.pb(1);
else a.pb(c - '0');
if(c == 'A') ap.pb(1);
else if(c == 'T') ap.pb(10);
else if(c == 'J') ap.pb(11);
else if(c == 'Q') ap.pb(12);
else if(c == 'K') ap.pb(13);
else ap.pb(c - '0');
}
map<int, int> mp;
for(int i = 0; i < a.size(); i++){
mp[ap[i]]++;
}
sort(a.begin(), a.end());
sort(ap.begin(), ap.end());
auto get15= [&]() -> ll{
ll f[16];
memset(f, 0, sizeof f);
f[0] = 1;
for(int i = 0; i < a.size(); i++){
for(int j = 15; j >= a[i]; j--){
f[j] += f[j - a[i]];
}
}
return f[15] * 2;
};
auto pairs = [&]() -> ll{
ll qwq = 0;
for(int i = 1; i <= 13; i++){
if(mp[i] >= 2){
qwq += mp[i] * 1ll * (mp[i] - 1);
}
}
return qwq;
};
auto runs = [&]() -> ll{
ll qwq = 0;
vector<vector<int>> b;
for(int i = 0; i < a.size(); i++){
if(b.empty() || b.back()[0] != ap[i]){
b.pb({ap[i], 1});
}
else{
b.back()[1]++;
}
}
ll owo = 1, c = 0;
for(int i = 0; i < b.size(); i++){
if(i){
if(b[i][0] - b[i - 1][0] != 1){
if(c > 2){
qwq += owo * c;
}
c = 1;
owo = b[i][1];
}
else{
c++;
owo *= b[i][1];
}
}
else{
owo = b[i][1];
c++;
solve();
}
return 0;
}*/
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3540kb
input:
5 4 5 6 5 5
output:
23
result:
ok single line: '23'
Test #2:
score: 0
Accepted
time: 0ms
memory: 3628kb
input:
13 A 2 3 4 5 6 7 8 9 T J Q K
output:
71
result:
ok single line: '71'
Test #3:
score: 0
Accepted
time: 0ms
memory: 3588kb
input:
10 2 2 3 4 5 8 9 T J Q
output:
45
result:
ok single line: '45'
Test #4:
score: 0
Accepted
time: 0ms
memory: 3632kb
input:
5 5 5 5 5 J
output:
28
result:
ok single line: '28'
Test #5:
score: 0
Accepted
time: 0ms
memory: 3532kb
input:
5 5 5 5 5 5
output:
40
result:
ok single line: '40'
Test #6:
score: 0
Accepted
time: 0ms
memory: 3840kb
input:
11 A 2 3 5 6 7 8 T J Q K
output:
41
result:
ok single line: '41'
Test #7:
score: 0
Accepted
time: 0ms
memory: 3792kb
input:
20 A 2 3 4 5 A 2 3 4 5 A 2 3 4 5 A 2 3 4 5
output:
20308
result:
ok single line: '20308'
Test #8:
score: 0
Accepted
time: 0ms
memory: 3608kb
input:
7 9 6 5 A 4 7 8
output:
16
result:
ok single line: '16'
Test #9:
score: 0
Accepted
time: 0ms
memory: 3556kb
input:
11 Q K 2 2 2 3 3 3 A A 4
output:
224
result:
ok single line: '224'
Test #10:
score: 0
Accepted
time: 0ms
memory: 3608kb
input:
100 A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
output:
506676942699987180
result:
ok single line: '506676942699987180'
Test #11:
score: 0
Accepted
time: 0ms
memory: 3552kb
input:
100 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
output:
333300
result:
ok single line: '333300'
Test #12:
score: 0
Accepted
time: 0ms
memory: 3600kb
input:
5 K J 2 6 8
output:
0
result:
ok single line: '0'
Test #13:
score: 0
Accepted
time: 0ms
memory: 3608kb
input:
7 T J J J Q K K
output:
32
result:
ok single line: '32'
Test #14:
score: 0
Accepted
time: 0ms
memory: 3552kb
input:
5 J Q K A 2
output:
3
result:
ok single line: '3'
Test #15:
score: 0
Accepted
time: 0ms
memory: 3612kb
input:
14 5 5 A 4 2 3 A 4 2 3 T J Q K
output:
438
result:
ok single line: '438'
Test #16:
score: 0
Accepted
time: 0ms
memory: 3620kb
input:
100 A T 4 K K J T 7 4 T Q A 5 K 8 T Q J K 5 3 8 A 9 3 4 7 J 5 7 K J 7 9 3 T 8 9 8 2 8 6 7 J T 6 6 4 5 K 9 6 5 K 5 J T A 4 3 A K 5 T Q T 6 K T 8 Q J K Q 8 A 6 9 5 7 K 3 2 5 Q J 4 T 2 7 2 9 2 T 9 4 5 9 5 5
output:
2440992624714
result:
ok single line: '2440992624714'
Test #17:
score: 0
Accepted
time: 0ms
memory: 3828kb
input:
100 K Q 3 K 9 5 5 7 A T K T 8 5 J 3 6 6 5 A 9 9 3 5 2 5 7 4 9 Q 9 4 9 A 2 T Q 2 K 3 4 4 9 8 K 3 K 5 A 2 Q 5 8 6 6 5 K 2 T 3 2 9 2 8 Q 3 A 6 4 K A 3 A 6 4 5 K A 6 4 3 T 3 Q 4 6 8 7 K 2 A J 3 8 5 K 5 A T 4
output:
1127283925810
result:
ok single line: '1127283925810'
Test #18:
score: 0
Accepted
time: 0ms
memory: 3540kb
input:
100 Q 6 6 A 8 J T T A 2 7 9 2 9 7 K T T 6 7 T 4 A K 2 T 8 T 5 Q J J 7 8 3 A 7 K A 8 J T J J T J 3 2 2 7 A K A J 6 7 6 Q 4 K 2 2 9 2 4 Q K 5 A T 2 6 5 A J 4 9 A Q 3 T A T 2 T 8 2 6 6 K 7 5 A 9 2 A T A 2 4
output:
1001732618498
result:
ok single line: '1001732618498'
Test #19:
score: 0
Accepted
time: 0ms
memory: 3608kb
input:
100 T J 9 2 T 5 3 Q J 6 Q 5 9 Q 4 8 K K 9 3 T Q 9 8 K 3 T A J K K 4 4 4 2 5 A A K A 3 K Q A 6 5 8 A A A 2 T 7 2 7 8 Q J A 8 3 9 2 9 7 7 Q 4 9 5 2 9 J 9 4 2 6 Q 4 2 3 7 5 7 5 7 8 3 9 8 2 Q Q T A A 2 4 6 3
output:
2636894652562
result:
ok single line: '2636894652562'
Test #20:
score: 0
Accepted
time: 0ms
memory: 3824kb
input:
100 J 5 Q 3 T J 8 2 T T 7 4 3 K 3 3 4 6 K T T 7 7 A K 8 9 7 7 K 2 K 2 Q K T 7 Q Q 4 9 3 3 4 5 J K T 3 6 4 5 Q 6 7 7 3 9 8 3 3 A T 3 Q 4 9 5 7 A 3 Q 4 6 J A A Q T A J J A 9 K 8 A A 2 6 T 4 T 9 J A 7 6 J 3
output:
1754378063080
result:
ok single line: '1754378063080'
Test #21:
score: 0
Accepted
time: 0ms
memory: 3560kb
input:
100 T 7 T 5 6 5 A K 7 8 8 K 6 5 5 8 9 Q 2 7 3 5 9 Q Q 9 Q 2 J 5 J 4 4 4 A 9 Q 5 4 5 6 3 5 3 6 T 5 Q J 8 7 4 A 2 8 2 6 T A 4 4 T 7 A T T 6 9 K 8 5 4 6 K 7 5 9 4 J A K 6 K 3 5 2 4 J 2 Q 6 8 J 9 7 8 6 J 6 2
output:
2519534370948
result:
ok single line: '2519534370948'