제출 #3232

#제출 시각아이디문제언어결과실행 시간메모리
3232pichulia올림픽 피자 (tutorial5)C++98
70 / 100
1000 ms1984 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...