Lose it! CodeForces - 1176C 문제 해결
You are given an array a consisting of n integers. Each ai is one of the six following numbers: 4,8,15,16,23,42.
Your task is to remove the minimum number of elements to make this array good.
An array of length k is called good if k is divisible by 6 and it is possible to split it into k6 subsequences 4,8,15,16,23,42.
Examples of good arrays:
[4,8,15,16,23,42] (the whole array is a required sequence); [4,8,4,15,16,8,23,15,16,42,23,42] (the first sequence is formed from first, second, fourth, fifth, seventh and tenth elements and the second one is formed from remaining elements); [] (the empty array is good). Examples of bad arrays:
[4,8,15,16,42,23] (the order of elements should be exactly 4,8,15,16,23,42); [4,8,15,16,23,42,4] (the length of the array is not divisible by 6); [4,8,15,16,23,42,4,8,15,16,23,23] (the first sequence can be formed from first six elements but the remaining array cannot form the required sequence). Input The first line of the input contains one integer n (1≤n≤5⋅105) — the number of elements in a.
The second line of the input contains n integers a1,a2,…,an (each ai is one of the following numbers: 4,8,15,16,23,42), where ai is the i-th element of a.
Output Print one integer — the minimum number of elements you have to remove to obtain a good array.
Examples Input
5
4 8 15 16 23
Output
5
Input
12
4 8 4 15 16 8 23 15 16 42 23 42
Output
0
Input
15
4 8 4 8 15 16 8 16 23 15 16 4 42 23 42
Output
3
분석하다.
이 문제의 관건은 [4,8.15.16.23.42] 서열을 구성할 수 있는 개수를 구하는 데 있다. 주의해야 할 것은 모든 자모의 순서가 바뀌면 안 된다는 것이다. 여기서 나는 맵을 이용하여 이 숫자들을 비추어 계산하기 편리하게 한 다음에 한 숫자를 입력할 때마다 판단을 하고 앞의 숫자의 개수가 입력한 숫자의 개수보다 항상 많다는 것을 보장한다.
자, 구체적인 문제풀이 과정은 제 코드를 볼 수 있고 상세한 코드 주석이 있습니다~
코드
#include
#include
using namespace std;
map<int, int> mp;
int main()
{
int n;
cin >> n;
mp[4] = 0;
mp[8] = 1;
mp[15] = 2;
mp[16] = 3;
mp[23] = 4;
mp[42] = 5;
int ans[6] = {0}; //
for (int i = 0;i < n;i++)
{
int a;
cin >> a;
if (mp[a] == 0){
ans[mp[a]]++;
}else if (ans[mp[a]-1]>0) // , 。 ans[0,4] ,
{
ans[mp[a]-1]--; //
ans[mp[a]]++;
}
}
cout << n-6*ans[5] << endl; //
return 0;
}
전송문
Lose it! CodeForces - 1176C
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.