CF1394E.Boboniu and Banknote Collection
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
No matter what trouble you're in, don't be afraid, but face it with a smile.
I've made another billion dollars!
— Boboniu
Boboniu has issued his currencies, named Bobo Yuan. Bobo Yuan (BBY) is a series of currencies. Boboniu gives each of them a positive integer identifier, such as BBY-1, BBY-2, etc.
Boboniu has a BBY collection. His collection looks like a sequence. For example:
We can use sequence a=[1,2,3,3,2,1,4,4,1] of length n=9 to denote it.
Now Boboniu wants to fold his collection. You can imagine that Boboniu stick his collection to a long piece of paper and fold it between currencies:
Boboniu will only fold the same identifier of currencies together. In other words, if ai is folded over aj ( 1≤i,j≤n ), then ai=aj must hold. Boboniu doesn't care if you follow this rule in the process of folding. But once it is finished, the rule should be obeyed.
A formal definition of fold is described in notes.
According to the picture above, you can fold a two times. In fact, you can fold a=[1,2,3,3,2,1,4,4,1] at most two times. So the maximum number of folds of it is 2 .
As an international fan of Boboniu, you're asked to calculate the maximum number of folds.
You're given a sequence a of length n , for each i ( 1≤i≤n ), you need to calculate the maximum number of folds of [a1,a2,…,ai] .
输入格式
The first line contains an integer n ( 1≤n≤105 ).
The second line contains n integers a1,a2,…,an ( 1≤ai≤n ).
输出格式
Print n integers. The i -th of them should be equal to the maximum number of folds of [a1,a2,…,ai] .
输入输出样例
输入#1
9 1 2 3 3 2 1 4 4 1
输出#1
0 0 0 1 1 1 1 2 2
输入#2
9 1 2 2 2 2 1 1 2 2
输出#2
0 0 1 2 3 3 4 4 5
输入#3
15 1 2 3 4 5 5 4 3 2 2 3 4 4 3 6
输出#3
0 0 0 0 0 1 1 1 1 2 2 2 3 3 0
输入#4
50 1 2 4 6 6 4 2 1 3 5 5 3 1 2 4 4 2 1 3 3 1 2 2 1 1 1 2 4 6 6 4 2 1 3 5 5 3 1 2 4 4 2 1 3 3 1 2 2 1 1
输出#4
0 0 0 0 1 1 1 1 1 1 2 2 2 2 2 3 3 3 3 4 4 4 5 5 6 7 3 3 3 4 4 4 4 3 3 4 4 4 4 4 5 5 5 5 6 6 6 7 7 8
说明/提示
Formally, for a sequence a of length n , let's define the folding sequence as a sequence b of length n such that:
- bi ( 1≤i≤n ) is either 1 or −1 .
- Let p(i)=[bi=1]+∑j=1i−1bj . For all 1≤i<j≤n , if p(i)=p(j) , then ai should be equal to aj .
( [A] is the value of boolean expression A . i. e. [A]=1 if A is true, else [A]=0 ).
Now we define the number of folds of b as f(b)=∑i=1n−1[bi=bi+1] .
The maximum number of folds of a is F(a)=max{f(b)∣b is a folding sequence of a} .