Задача состоит в следующем: у шеф-повара есть N блюд разных типов, расположенных в ряд: A1, A2,…, AN, где Ai обозначает тип ih di sh. Он хочет выбрать как можно больше блюд из данного списка, но, удовлетворяя двум условиям:
- Он может выбрать только один тип ди sh.
- Нет двух выбранных блюд должны быть смежными друг с другом. Шеф-повар хочет знать, какой тип ди sh он должен выбрать, чтобы он мог выбрать максимальное количество блюд.
Пример: учитывая N = 9 и A = [1,2, 2,1,2,1,1,1,1].
Для типа 1 шеф-повар может выбрать не более четырех блюд. Один из способов выбрать четыре блюда типа 1 - А1, А4, А7 и А9.
Для типа 2 шеф-повар может выбрать не более двух блюд. Одним из способов является выбор A3 и A5.
Так что в этом случае шеф-повар должен go для типа 1, в котором он может выбрать больше блюд.
import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.Scanner;
/* Name of the class has to be "Main" only if the class is public. */
class Solution
{
public static void main (String[] args) throws java.lang.Exception
{
Scanner sc1 = new Scanner(System.in);
int testCases = sc1.nextInt();
int prevNum =0;
int prevCount =0;
for(int i=0;i<testCases;i++){
int totalDishes = sc1.nextInt();
int [] dish = new int[totalDishes];
for(int j =0;j<totalDishes;j++){
dish[j] = sc1.nextInt();
}
for(int j =0;j<totalDishes;j++){
int count =0;
int num =dish[j];
if(prevNum!=num){
for(int k=j;k<totalDishes;k++){
if(dish[j]==dish[k]){
count++;
if(k+1<totalDishes && dish[k]==dish[k+1] ){
k++;
}
}
}
if(prevCount < count){
prevNum = num;
prevCount = count;
}
}
}
System.out.println(prevNum);
}
}
}