Blomsymmetri | 프로그래밍의 벗 PivotOJ
PivotOJ

Blomsymmetri

시간 제한: 2000ms메모리 제한: 1024MB출처: Programmeringsolympiaden 2021 — kattBOJ 26954

문제

Fredrik har just ställt ut nya blommor på sin fönsterbräda. Men någonting känns lite fel. Det är inte riktigt så symmetriskt som han skulle vilja ha det.

Det finns KK olika blomsorter och varje sort beskrivs av ett av heltalen 1,2,...,K1,2,...,K. Fönsterbrädan har NN blommor utställda på rad från vänster till höger. Den ii:te blomman från vänster är av sort aia_i. Fredrik vill att blommorna ska vara symmetriska, d.v.s att ai=aN+1ia_i=a_{N+1-i} gäller för alla ii. För att åstakomma detta tänker han göra drag som byter plats på två intilliggande blommor. Ett drag kan alltså byta plats på blomma ii och blomma i+1i+1 för något 1iN11\le i \le N-1.

Vad är minsta antalet drag som krävs för att uppnå blomsymmetri?

입력

Den första raden av indata innehåller två heltal NN och KK (1N,K2000001 \le N,K \le 200 000): antalet blomor på fönsterbrädan och totala antalet sorter som finns. Därefter följer en rad med NN heltal a1,a2,...,aNa_1,a_2,...,a_N (1aiK1\le a_i \le K): blommorna på fönsterbrädan.

Det garanteras att det finns en sekvens av drag som ordnar blommorna symmetriskt.

출력

Skriv ut ett tal: det minsta möjliga antalet drag för att uppnå blomsymmetri.

힌트

I det första exemplet kan vi börja med att byta plats på blomma 2 och 3, och sedan på blomma 1 och 2. Då kommer blommorna hamna i ordningen 1 3 3 1.

I det andra exemplet kan vi till exempel göra följande 5 byten i ordning: 4 och 5, 3 och 4, 1 och 2, 2 och 3, 7 och 8. Då kommer blommorna hamna i ordningen 1 2 3 1 1 3 2 1.

예제

예제 1

입력
4 5
5 5 2 2
출력
2

예제 2

입력
8 3
3 1 1 1 2 3 1 2
출력
5

예제 3

입력
7 3
1 3 2 1 2 2 2
출력
5
코드를 제출하려면 로그인하세요.