티스토리 뷰

참고)  32bit integer 이내 답이다 가 들어갈시에 만약 최소값의 범위를 잡을시 그냥 큰값이 아닌 99999999999999999와 같이 정말로 엄청나게 큰 수를 넣는다


#include<iostream>

#include<queue>

#include<cstdio>


using namespace std;


//우선순위 큐

//방법 3가지

//1. 배열 기반

//2. 연결리스트 기반

//3. 힙 기반 - min heap 기준


//int가 안되서 longlong으로 바꿈


queue<long long> arr[101];

int result[101];


int main() {

int K, N;

scanf("%d %d", &K, &N);

int a;


for (int i = 0; i < K; i++) {

scanf("%d", &a);

arr[i].push(a);   

result[i] = a;

} // 자료 받기


long long v=0; // 최소 비교값

int index = 0;//최소값인 곳


for (int i = 0; i < N; i++) {

// 최소값 비교해서 먼저 보내고

v = 9999999999999999;

index = 0;

for (int j = 0; j < K; j++) {

long long temp=0;

if (!arr[j].empty())

temp = arr[j].front();

else

temp = 9999999999999999;

//printf("%lld\n", temp);

// 나갈값 찾기 - 최소값


if (v > temp) {

v = temp;

index = j;

} // k 개수 만큼 돌면서 최소값 찾기 즉, 최소값을 트리의 맨 위로 올리는 느낌

}

//printf("\n");

//새로운 값 추가하고

for (int c = 0; c < K; c++) {

if (c == index) { // 최소값이 맞다면 새로운값 추가

arr[c].pop();

arr[c].push(v*result[c]);

}

else if (c > index)

arr[c].push(v*result[c]);

}

}

printf("%lld\n", v);

return 0;

}

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함