# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
18932 | 2016-02-16T13:15:33 Z | dltldls95 | 올림픽 피자 (tutorial5) | C++ | 0 ms | 0 KB |
#include <iostream> #include "grader.h" #define C(a) memset((a),0,sizeof(a)) using namespace std; int order[100000][8]; int ordered[100000]; int firstorder = -1; int lastorder = -1; int currentFood[8]; void Init() { C(order); C(ordered); } void Order(int n, int* a) { if(firstorder == -1) firstorder = 0; lastorder++; for(int i = 0; i < n; i++) { order[lastorder][a[i]]++; ordered[i] = 1; } CheckAll(); } void CheckAll() { for(int i = firstorder; i < lastorder; i++) { bool bakable = true; for(int j = 0; j < 8; j++) { if(order[i][j] == 1 && currentFood[8] == 0) bakable = false; } if(bakable) { Bake(i); for(int j = 0; j < 8; j++) { if(order[i][j]) currentFood[j]--; } if(i == firstorder) { for(int j = firstorder+1; j < 100000; j++) { if(ordered[j]) { firstorder = j; } } } } } } void Delivery(int l) { currentFood[i]++; CheckAll(); }