직대딩 블로그
BOJ 2531번 회전 초밥 본문
문제 링크 : https://www.acmicpc.net/problem/2531
2531번: 회전 초밥
첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주어진다. 단, 2 ≤ N ≤ 30,000, 2 ≤ d ≤ 3,000, 2 ≤
www.acmicpc.net
회전 초밥의 범위를 나타내는 배열을 하나 만들어주고,
어떤걸 먹었는지 반복문을 통해 표시해주면 된다.
#include<stdio.h>
#include<algorithm>
int n, d, k, c, cnt;
int a[33005], vst[33005];
void ins(int go)
{
if (!vst[go]) cnt++;
vst[go]++;
}
void del(int go)
{
vst[go]--;
if (!vst[go]) cnt--;
}
int main()
{
scanf("%d %d %d %d", &n, &d, &k, &c);
for (int i = 0; i < n; i++) scanf("%d", &a[i]);
for (int i = 0; i < k - 1; i++) a[i + n] = a[i];
ins(c);
for (int i = 0; i < k - 1; i++) ins(a[i]);
int ans = 0;
for (int i = 0; i < n; i++)
{
ins(a[i + k - 1]);
ans = std::max(ans, cnt);
del(a[i]);
}
printf("%d", ans);
}
'알고리즘 > 백준 온라인 저지' 카테고리의 다른 글
BOJ 10845번 큐 (0) | 2023.02.17 |
---|---|
BOJ 17427번 약수의 합 2 (0) | 2023.02.16 |
BOJ 10159번 저울 (0) | 2023.02.16 |
BOJ 20366번 같이 눈사람 만들래? (0) | 2023.02.13 |
BOJ 6588번 골드바흐의 추측 (0) | 2023.02.12 |
Comments