题目链接:http://codeforces.com/contest/1176/problem/C
题意:https://www.luogu.com.cn/problem/CF1176C
思路:
把这6个数按顺序排成一排,传递一样,比如现在是15,就把8的个数-1,15的个数+1,就代表这一个序列传到了15了,最后只要统计42的个数就行了。
代码:
#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
#define eps 1e-7
typedef long long ll;
using namespace std;
const ll infll = 0x3f3f3f3f3f3f3f3fll;
const int maxn = 1e5 + 5;
const int mod = 1e9 + 7;
int n,a[50];
int main (){
cin>>n;
for (int i=0;i<n;i++){
int x;
cin>>x;
if (x==4) a[x]++;
else if (x==8&&a[4]){
a[4]--;
a[x]++;
}
else if (x==15&&a[8]){
a[8]--;
a[x]++;
}
else if (x==16&&a[15]){
a[15]--;
a[x]++;
}
else if (x==23&&a[16]){
a[16]--;
a[x]++;
}
else if (x==42&&a[23]){
a[23]--;
a[x]++;
}
}
cout<<n-a[42]*6<<endl;
return 0;
}