Submission #16670

#TimeUsernameProblemLanguageResultExecution timeMemory
16670CodingBug올림픽 피자 (tutorial5)C++98
100 / 100
82 ms1732 KiB
#include "pizza.h" #include <queue> #define M 8 using namespace std; int p,a[M],c; queue<int> Q[1<<M]; void Init() { int i; p=0,c=-1; for(i=0;i<M;i++) a[i]=0; for(i=0;i<(1<<M);i++) while(!Q[i].empty()) Q[i].pop(); } void Order(int N, int *A) { int ord=0,i; c++; for(i=0;i<N;i++) ord|=(1<<A[i]); if((p&ord)==ord){ Bake(c); for(i=0;i<M;i++){ if(ord&(1<<i)){ a[i]--; if(!a[i]){ p-=(1<<i); } } } } else{ Q[ord].push(c); } } void Delivery(int I) { a[I]++; if(a[I]==1){ p|=(1<<I); int mn=c+1,v=-1,i; for(i=0;i<(1<<M);i++){ if((p&i)==i && !Q[i].empty()){ if(mn>Q[i].front()){ mn=Q[i].front(); v=i; } } } if(v!=-1){ Bake(Q[v].front()); for(i=0;i<M;i++){ if(v&(1<<i)){ a[i]--; if(!a[i]) p-=(1<<i); } } Q[v].pop(); } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...