View Code of Problem 10

#include<stdio.h>
int top = 0;
void push(int s[], int n)
{
	s[top] = n;
	top++;
	return;
}
int main()
{
	int stack[4];
	int n;
	
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
	{
		for (int i = 0; i < 4; i++)
		{
			stack[i] = 0;
		}
		top = 0; int flag = 0;
		for (int k = 0; k < 4; k++)
		{
			int now;
			scanf("%d", &now);

			if (now != 0 && top != 0 && now == stack[top - 1] && flag == 0)
			{
				stack[top - 1] *= 2;
				flag = 1;
			}
			else if (now != 0 && now != stack[top])
			{
				push(stack, now);
				flag = 0;
			}
		}
		if (top != 0)
		{
			for (int i = 0; i < 4 - top; i++)
			{
				printf("0 ");
			}
			for (int i = 0; i < top - 1; i++)
			{
				printf("%d ", stack[i]);
			}
			printf("%d\n", stack[top - 1]);
		}
		else
		{
			printf("0 0 0 0\n");
		}
	}
}

Double click to view unformatted code.


Back to problem 10