This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "pizza.h"
#include <vector>
using namespace std;
static int order_num;
static int a[8];
struct A{
	int i,d;
};
static vector<A> b;
void Init() {
  order_num = 0;
  int i, j;
  for(i=0; i<8; i++)
	  a[i] = 0;
}
bool able(int x)
{
	int i, j;
	j=1;
	for(i=0;i<8;i++)
	{
		if(x&j)
		{
			if(a[i]==0)
				return false;
		}
		j*=2;
	}
	j=1;
	for(i=0;i<8;i++)
	{
		if(x&j)
		{
			a[i]--;
		}
		j*=2;
	}
	return true;
}
void check(int mod)
{
	int i, j;
	int n = b.size();
	if(mod == 0)
		i = n - 1;
	else
		i = 0;
	for(;i<n;i++)
	{
		if(able(b[i].d))
		{
			Bake(b[i].i);
			b.erase(b.begin() + i);
			i--;
			n--;
		}
	}
}
void Order(int N, int *A) {
	int i, j, k=0;
	j=1;
	for(i=0;i<8;i++)
	{
		int ii;
		for(ii=0;ii<N;ii++)
		{
			if(A[ii] == i)
				break;
		}
		if(ii<N)
			k+=j;
		j*=2;
	}
	struct A c;
	c.d = k;
	c.i = order_num;
	b.push_back(c);
	order_num++;
	check(0);
}
void Delivery(int I) {
	a[I]++;
	check(1);
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |