-
[Algorithm] C++ 멀티태스킹(카카오 먹방 문제 변형, 시뮬레이션)Programming/Algorithm 2019. 12. 25. 01:27
입력설명
첫 번째 줄에 작업의 개수 N(1<=N<=2,000)이 주어지고 그 다음 N줄에 걸쳐 각 작업을 처리하는데 걸리는 시간이 초단위로 주어진다. 한 작업을 처리하는데 필요한 시간은 1,000를 넘지 않는다. 마지막 줄에 정전이 발생한 시간 K(1<=K<=2,000,000)가 주어진다.
출력설명첫 번째 줄에 몇 번 작업부터 다시 시작해야 하는지 작업 번호를 출력한다. 만약 더 이상 처리할 작업이 없다면 -1를 출력한다.
입력예제
3
1
2
3
5
출력예제
3
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<vector> #include<algorithm> using namespace std; int a[2001]; int main() { int n, k, i, p = 0, cnt = 0, tot = 0; // tot 는 총 작업시간 더할 애 scanf("%d", &n); for (i = 1; i <= n; i++) { scanf("%d", &a[i]); tot += a[i]; // -1을 구현해주기 위해 } scanf("%d", &k); if (k >= tot) { printf("-1\n"); return 0; } while (1) { p++; if (p > n) p = 1; if (a[p] == 0) continue; a[p]--; cnt++; // 1초 지났다는 것을 표현 if (cnt == k) break; } /* 전기가 들어왔다 */ while (1) { p++; if (p > n) p = 1; if (a[p] != 0) break; } printf("%d\n", p); return 0; }
'Programming > Algorithm' 카테고리의 다른 글
[Algorithm] C++ 영지(territory) 선택 : (small) (0) 2019.12.27 [Algorithm] C++ 봉우리(2차원 배열) (0) 2019.12.26 [Algorithm] C++ 공주 구하기(조세퍼스) (0) 2019.12.23 [Algorithm] C++ 마구간 정하기(이분검색) (0) 2019.12.23 [Algorithm] C++ 뮤직비디오(이분검색) (0) 2019.12.23