Submission #18580

#TimeUsernameProblemLanguageResultExecution timeMemory
18580jjhstop올림픽 피자 (tutorial5)C++98
100 / 100
151 ms1732 KiB
#include "pizza.h" #include <queue> using namespace std; queue<int> Q[256]; int order_num; int ingred[9]; int delivered; void Init() { order_num = 0; } void Order(int N, int *A) { int ordering = 0; for (int i = 0; i < N; i++) { ordering |= (1 << A[i]); } if ((ordering & delivered) == ordering) { Bake(order_num); for (int i = 0; i < 8; i++) { if (ordering & (1 << i)) { ingred[i]--; if (ingred[i] == 0) delivered ^= (1 << i); } } } else { Q[ordering].push(order_num); } order_num++; } int check(int a) { for (int i = 0; i< 8; ++i) { if (((a >> i) & 1) && (ingred[i] == 0)) return 0; } return 1; } void Delivery(int i) { ingred[i]++; if (ingred[i] == 1) { delivered |= (1 << i); } int minIdx = -1; int min = 99999; for (int i = 0; i < 256; i++) { if (!Q[i].empty() && check(i)) { if (Q[i].front() < min) { min = Q[i].front(); minIdx = i; } } } if (minIdx != -1) { Bake(Q[minIdx].front()); Q[minIdx].pop(); for (int i = 0; i < 8; i++) { if (minIdx & (1 << i)) { ingred[i]--; if (ingred[i] == 0) delivered ^= (1 << i); } } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...