hiho week 261 register

Ended

Participants:52

Verdict:Accepted
Score:100 / 100
Submitted:2019-06-30 17:24:32

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<iostream>
#include<string>
using namespace std;
int a[10], b[10], c[10];
int get_dou(int p[10]) {
    int cnt = 0;
    for(int i = 1; i <= 9; ++i)
        if(p[i] == 4) cnt += 2;
        else if(p[i] >= 2) cnt++;
    return cnt;
}
int get_tri(int p[10], int k) {
    if(k == 10) return 0;
    if(p[k] == 0) return get_tri(p, k + 1);
    if(k >= 8) {
        if(p[k] >= 3) return get_tri(p, k + 1) + 1;
        else return get_tri(p, k + 1);
    }
    int cnt = 0, tmp;
    if(p[k] >= 3) {
        p[k] -= 3;
        tmp = get_tri(p, k) + 1;
        p[k] += 3;
        cnt = cnt > tmp ? cnt : tmp;
    }
    if(p[k + 1] != 0 && p[k + 2] != 0) {
        p[k] -= 1; p[k + 1] -= 1; p[k + 2] -= 1;
        tmp = get_tri(p, k) + 1;
        p[k] += 1; p[k + 1] += 1; p[k + 2] += 1;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX