๋ฌธ์ :
https://www.acmicpc.net/problem/3020
๋ถ์ :
1. ์์๊ณผ ์ข ์ ์์ ๊ตฌ๋ถ์ ์ง์์ธ์ง ํ์์ธ์ง๋ค. ๋ฐ๋ผ์ ๊ฐ๋ฅ๋ฒ๋ ๊ฐ ๋์ด 1์ธ ๊ณณ์ ์ง๋๋ค๋ฉด ์ข ์ ์์ 1์ธ ๋์ด, ์์์ H -1 ์ธ ๋์ด๋ฅผ ๋์์ ์ง๋๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
2. ์์๋ผ๋ฆฌ์ (๋๋ ์ข ์ ์๋ผ๋ฆฌ์) ์์ ๋ฐ๋์ ์๊ด์ด ์๋ค. ๊ฐ๋ฅ๋ฒ๋ ๋ N ๊ธธ์ด๋ฅผ ํต๊ณผํ์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ์์์ ๊ธธ์ด๋งํผ ๊ฐ์ง ์์ ๊ฐ์๋ฅผ ๋ฐฐ์ด์ ์ ์ฅํ๋ค. (์ข ์ ์๋ ๋๊ฐ๋ค)
3. ๋์ด๊ฐ H์ผ๋ ๊ฐ๋ฅ๋ฒ๋ ๋ ์ข ์ ์์ H ๋์ด๋ง์ ์ง๋๊ฐ๋ค. H-1์ผ๋๋ H-1 ๋์ด์ธ ์ข ์ ์ + H ๋์ด์ธ ์ข ์ ์์ ์ง๋๊ฐ๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก H-2์ผ๋ ==> H-2 ๋์ด ์ข ์ ์ + H-1 ๋์ด ์ข ์ ์ + H ๋์ด ์ข ์ ์์ ์ง๋๊ฐ๋ค. ๋์ ํฉ์ ์ ์ฉํ๋ฉด ๋ ๊ฑฐ ๊ฐ๋ค.
4. ์์๊ณผ ์ข ์ ์์ ๋์์ ์ง๋๊ฐ๋ฏ๋ก sum ๋ฐฐ์ด์ i๋์ด ์์ + H-i ๋์ด ์ข ์ ์์ ๋ํด ๊ฐ๋ฅ๋ฒ๋ ๊ฐ ์ง๋๊ฐ ์ด ์ฅ์ ๋ฌผ์ ์ ์ฅํ๋ค.
c++ ์ฝ๋ :
//
// 3020_ firefly.cpp
// SOMA๐ฉ๐ป๐ป
//
// Created by JoSoJeong on 2022/02/21.
//
#include <iostream>
#include <string.h>
#include <algorithm>
using namespace std;
int N, H, h;
long long mite[5000001]; //์์
long long tite[5000001]; //์ข
์ ์
long long sum[5000001];
int main(){
cin >> N >> H;
memset(mite, 0, sizeof(mite));
memset(tite, 0, sizeof(tite));
memset(sum, 0, sizeof(sum));
for(int i = 1; i <= N; i++){
cin >> h;
if(i % 2 == 1){ // ์์
mite[h]++; //h ๋์ด์ธ ๊ฐ์
}else{
tite[h]++;
}
}
for(int i = H - 2; i >= 1; i--){ // ๋์ ํฉ
mite[i] += mite[i+1];
tite[i] += tite[i+1];
}
for(int i = 1; i <= H; i++){
sum[i] = mite[i] + tite[H + 1 - i]; // i ๋์ด ์์ + H - i ๋์ด ์ข
์ ์
}
sort(sum+1, sum+H+1); // 1 ~ H
int cnt = 0;
int target = sum[1];
for(int i = 1; i <= H; i++){
if(sum[i] == target){
cnt++;
}
}
cout << target << " " << cnt <<'\n';
return 0;
}
'Algorithm๐ฐ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1516 ๊ฒ์ ๊ฐ๋ฐ (0) | 2022.03.03 |
---|---|
[๋ฐฑ์ค] 2630 ์์ข ์ด ๋ง๋ค๊ธฐ (0) | 2022.02.24 |
[๋ฐฑ์ค] 13549 ์จ๋ฐ๊ผญ์ง 3 dijkstra (0) | 2022.02.17 |
[๋ฐฑ์ค] 1018 ์ฒด์คํ ๋ค์ ์น ํ๊ธฐ brute force (0) | 2022.02.17 |
[๋ฐฑ์ค] 1969 DNA (0) | 2022.02.16 |
๋๊ธ