feat(queue): new queue problem formated

This commit is contained in:
2025-10-31 19:38:09 -03:00
parent de5740834b
commit a1b4f617c1
18 changed files with 6641 additions and 0 deletions

View File

@@ -0,0 +1,97 @@
# Normal directories
SRC_DIR := src
BIN_DIR := bin
DBG_DIR := bin/debug
# Grader directories
GRADER := $(wildcard $(SRC_DIR)/grader.cpp)
GRADER_DIR := $(SRC_DIR)/grader
HANDLER_DIR := $(SRC_DIR)/handler
GRADER_SRC := $(wildcard $(GRADER_DIR)/*.cpp)
GRADER_BIN := $(patsubst $(GRADER_DIR)/%.cpp, $(BIN_DIR)/%, $(GRADER_SRC))
GRADER_DBG := $(patsubst $(GRADER_DIR)/%.cpp, $(DBG_DIR)/%, $(GRADER_SRC))
# Change CPP source directories if grader is defined
ifdef GRADER
SRC := $(wildcard $(HANDLER_DIR)/*.cpp)
BIN := $(patsubst $(HANDLER_DIR)/%.cpp, $(BIN_DIR)/%, $(SRC))
DBG := $(patsubst $(HANDLER_DIR)/%.cpp, $(DBG_DIR)/%, $(SRC))
else
SRC := $(wildcard $(SRC_DIR)/*.cpp)
BIN := $(patsubst $(SRC_DIR)/%.cpp, $(BIN_DIR)/%, $(SRC))
DBG := $(patsubst $(SRC_DIR)/%.cpp, $(DBG_DIR)/%, $(SRC))
endif
SRC_C := $(wildcard $(SRC_DIR)/*.c)
BIN_C := $(patsubst $(SRC_DIR)/%.c, $(BIN_DIR)/%, $(SRC_C))
DBG_C := $(patsubst $(SRC_DIR)/%.c, $(DBG_DIR)/%, $(SRC_C))
SRC_JAVA := $(wildcard $(SRC_DIR)/*.java)
BIN_JAVA := $(patsubst $(SRC_DIR)/%.java, $(BIN_DIR)/%.class, $(SRC_JAVA))
DBG_JAVA := $(patsubst $(SRC_DIR)/%.java, $(DBG_DIR)/%.class, $(SRC_JAVA))
CHECKER := $(wildcard $(SRC_DIR)/checker.cpp)
C := gcc
CPP := g++
CXX_FLAGS := -Wall -O2
DEBUG_FLAGS := -Wall -g
BOCA_FLAGS := -static -DBOCA_SUPPORT
JV = javac
JV_DEBUG = -g
JV_DIR = -d bin
JV_DBG_DIR = -d bin/debug
.PHONY: all debug release checker clean
all: debug release checker
debug: $(DBG) $(DBG_C) $(DBG_JAVA) $(GRADER_DBG)
release: $(BIN) $(BIN_C) $(BIN_JAVA) $(GRADER_BIN)
ifdef CHECKER
checker: $(DBG_DIR)/checker-boca $(BIN_DIR)/checker-boca
endif
$(BIN): $(BIN_DIR)/% : $(SRC_DIR)/%.cpp | $(BIN_DIR)
$(CPP) $(CXX_FLAGS) $^ -o $@
$(DBG): $(DBG_DIR)/% : $(SRC_DIR)/%.cpp | $(DBG_DIR)
$(CPP) $(DEBUG_FLAGS) $^ -o $@
$(BIN_C): $(BIN_DIR)/% : $(SRC_DIR)/%.c | $(BIN_DIR)
$(C) $(CXX_FLAGS) $^ -o $@
$(DBG_C): $(DBG_DIR)/% : $(SRC_DIR)/%.c | $(DBG_DIR)
$(C) $(DEBUG_FLAGS) $^ -o $@
$(BIN_JAVA): $(BIN_DIR)/%.class : $(SRC_DIR)/%.java | $(BIN_DIR)
$(JV) $(JV_DIR) $^
$(DBG_JAVA): $(DBG_DIR)/%.class : $(SRC_DIR)/%.java | $(DBG_DIR)
$(JV) $(JV_DEBUG) $(JV_DBG_DIR) $^
$(GRADER_BIN): $(BIN_DIR)/% : $(GRADER_DIR)/%.cpp $(GRADER) $(GRADER_DIR)/*.h
$(CPP) $(CXX_FLAGS) $^ -o $@
$(GRADER_DBG): $(DBG_DIR)/% : $(GRADER_DIR)/%.cpp $(GRADER) $(GRADER_DIR)/*.h
$(CPP) $(DEBUG_FLAGS) $^ -o $@
$(BIN_DIR):
mkdir -p $@
$(DBG_DIR):
mkdir -p $@
$(BIN_DIR)/checker-boca: $(SRC_DIR)/checker.cpp
$(CPP) $(CXX_FLAGS) $(BOCA_FLAGS) $^ -o $@
$(DBG_DIR)/checker-boca: $(SRC_DIR)/checker.cpp
$(CPP) $(DEBUG_FLAGS) $(BOCA_FLAGS) $^ -o $@
clean:
@echo Cleaning problem files
rm -rf bin

View File

@@ -0,0 +1,5 @@
1
3 2 2
2 3 2
1 3
0

View File

@@ -0,0 +1,188 @@
\ProvidesPackage{maratona}
\LoadClass[11pt]{article}
% remove page numbers
\pagenumbering{gobble}
\RequirePackage{fancyhdr}
\RequirePackage{tabularx,colortbl}
%\RequirePackage{arial}
\RequirePackage{ifpdf}
\RequirePackage[T1]{fontenc}
\RequirePackage[utf8]{inputenc}
\RequirePackage[portuguese]{babel}
\RequirePackage{graphics}
\RequirePackage{graphicx}
\RequirePackage{amssymb,amsmath,wrapfig}
\RequirePackage{xcolor,colortbl}
\RequirePackage{xcolor}
\RequirePackage{ifthen}
\oddsidemargin 0cm
\evensidemargin -2cm
\topmargin -1cm
\textwidth 16cm
\textheight 23cm
\ifpdf
\RequirePackage[pdftex]{hyperref}
\else
\RequirePackage[hypertex]{hyperref}
\fi
\newcommand{\var}[1]{\ensuremath{{#1}}}
\hypersetup{
letterpaper,
colorlinks=true,
linkcolor=blue,
urlcolor=blue,
pdfpagemode=none,
pdftitle={IV Maratona de Programação do IFB \today},
pdfauthor={},
pdfsubject={Caderno de problemas da IV Maratona de Programação do IFB },
pdfkeywords={maratona, programação, IFB}
}
\DeclareGraphicsExtensions{png}
\lhead{DS Contest Tools}
\pagestyle{fancy}
% Capa
\newenvironment{Maratona}[3]
{
\begin{titlepage}
\begin{center}
\vspace{1cm}
\Large{\textbf{#1}} \\
\vspace{1cm}
{\textbf{Caderno de Problemas}} \\
\vspace{1cm}
\begin{small}
\textsl{#2}
\end{small} \\
\begin{figure}[htp]
\begin{center}
\includegraphics[scale=1]{logos/logo-maratona.png}
\end{center}
\end{figure}
{(Este caderno contém {#3} problemas)} \\
\vspace{1cm}
}
{
\vfill
\begin{small}
{QNM 40, Área Especial nº 01,
Taguatinga/DF, 72146-000 ,
Brasil } \\
{Telefone (61) 2103-2200 \\http://www.ifb.edu.br/taguatinga} \\
\end{small}
\end{center}
\end{titlepage}
}
\newcommand{\Organizacao}[2]{
{\small \vfill
\begin{center}
\textbf{Comissão Organizadora:} \\
{#1} \\
\bigskip
\textbf{Apoio:}\\
{#2}
\end{center}
}
\vfill
}
% Problema
\newcounter{problem}
\newenvironment{Problema}[4]{
\stepcounter{problem}
\newpage
\begin{center}
\Large{\ifthenelse{\equal{#1}{}}{\textbf{{#2}}}{\textbf{Problema {#1} -- {#2} }}}{\\\footnotesize \textbf{Limite de tempo: {#3}s}}{\\[-0.1cm]\footnotesize \textbf{Limite de memória: {#4}MB}}
\end{center}
}
\newcounter{problemAutor}
\newenvironment{ProblemaAutor}[5]{
\stepcounter{problemAutor}
\newpage
\begin{center}
\Large{\ifthenelse{\equal{#1}{}}{\textbf{{#2}}}{\textbf{Problema {#1} -- {#2} }}}{\\\footnotesize \textbf{Limite de tempo: {#3}s}}{\\[-0.1cm]\footnotesize \textbf{Limite de memória: {#4}MB\\}}{
\footnotesize Autor: {#5}
}
\end{center}
}
% Código-fonte
\newcommand{\codigofonte}[1]{Nome do arquivo fonte: {#1}}
% Entrada
\newcommand{\Entrada}{
\bigskip
\begin{large}
\textbf{Entrada} \\
\end{large}
}
% Saida
\newcommand{\Saida}{
\bigskip
\begin{large}
\textbf{Saída} \\
\end{large}
}
\newcommand{\Interacao}{
\bigskip
\begin{large}
\textbf{Interação} \\
\end{large}
}
\newcommand{\Notas}{
\bigskip
\begin{large}
\textbf{Notas} \\
\end{large}
}
% Exemplo
\newenvironment{Exemplo}
{
\tabularx{\textwidth}{XX}
% {@{\extracolsep{\fill}}|l|l|}
% {|l|l@{\extracolsep{\fill}|}}
\hline
Entrada & Saída \\\hline
}
{
\hline
\endtabularx
}
% Exemplo de Entrada
\newenvironment{ExemploEntrada}
{
\bigskip
\begin{large}
\textbf{Exemplo} \\
\end{large}
}
{
}
% Sample Output

View File

@@ -0,0 +1,76 @@
\documentclass{maratona}
\begin{document}
\begin{ProblemaAutor}{}{O Problema dos Pacotes Viajantes}{3}{256}{UVA - 10172}
O sistema de entregas automáticas da cidade de Logitown é composto por um anel de estações interligadas. Em cada estação, pequenas encomendas aguardam para serem levadas até seus destinos, que também são outras estações do mesmo anel.
Um único carrinho autônomo é responsável por realizar todas as entregas. Ele percorre continuamente as estações em ordem crescente: após visitar a estação $N$, retorna para a estação $1$, repetindo o ciclo até que todas as encomendas tenham sido entregues. No início da operação, o carrinho está vazio e parado na estação $1$.
Cada estação possui duas plataformas de operação:
\begin{itemize}
\item \textbf{Plataforma A}: recebe as encomendas que chegaram ao seu destino final.
\item \textbf{Plataforma B}: mantém uma fila de encomendas que ainda precisam ser enviadas para outras estações.
\end{itemize}
O carrinho possui uma pilha interna com capacidade limitada, utilizada para armazenar as encomendas em trânsito. Como se trata de uma pilha, apenas a encomenda localizada no topo pode ser retirada. Ao chegar a uma estação, o carrinho inicia o processo de \textbf{descarregamento}: ele retira do topo da pilha todas as encomendas destinadas àquela estação, uma a uma, depositando-as na plataforma A. Se encontrar uma encomenda destinada a outra estação, ele tenta colocá-la na fila da plataforma B, caso haja espaço disponível. Se a fila estiver cheia, o descarregamento é interrompido.
Em seguida, ocorre o \textbf{carregamento}: o carrinho pega, na ordem da fila da plataforma B, as encomendas que aguardam envio e as adiciona ao topo da pilha, até que esta atinja sua capacidade máxima ou a fila fique vazia.
Cada operação de carregamento ou descarregamento de uma encomenda leva exatamente $1$ minuto, enquanto o deslocamento entre duas estações consecutivas consome $2$ minutos. O processo continua até que não restem encomendas no carrinho nem em nenhuma das plataformas B.
Dado o estado inicial das plataformas, determine o tempo total necessário para que todas as encomendas sejam entregues às suas respectivas estações.
\Entrada
A primeira linha contém um inteiro $T$ $(1 \le T \le 100)$ indicando o número de conjuntos de teste.
Cada conjunto de teste começa com três inteiros $N$, $S$ e $Q$, onde $N$ $(2 \le N \le 100)$ é o número de estações no anel, $S$ $(1 \le S \le 100)$ é a capacidade máxima do carrinho (em encomendas), e $Q$ $(1 \le Q \le 100)$ é a capacidade máxima da fila de cada estação.
Em seguida, seguem $N$ linhas. A $i$-ésima linha contém um inteiro $q_i$ $(0 \le q_i \le Q)$ indicando o número de encomendas na fila da estação $i$, seguido de $q_i$ inteiros representando os destinos dessas encomendas $(1 \le \text{destino} \le N, \ \text{destino} \ne i)$, listados da frente para o fim da fila.
\Saida
Para cada conjunto de teste, deve-se imprimir um único número inteiro representando o total de minutos necessários para que todas as encomendas sejam entregues às plataformas A correspondentes.
\ExemploEntrada
\begin{Exemplo}
\texttt{1} & \texttt{12}\\
\texttt{3~2~2} & \\
\texttt{2~3~2} & \\
\texttt{1~3} & \\
\texttt{0} & \\
\end{Exemplo}
\Notas
Neste caso de teste, o sistema conta com três estações dispostas em anel. O carrinho inicia vazio na estação 1, e cada estação possui capacidade máxima de duas encomendas em sua fila (plataforma B). O objetivo é calcular o tempo total necessário para que todas as encomendas sejam entregues em suas respectivas estações de destino.
\textbf{Passo a passo da simulação:}
\begin{enumerate}
\item \textbf{Estação 1:} o carrinho carrega as duas encomendas disponíveis na fila B, com destinos 2 e 3. Cada carregamento leva $1$ minuto, totalizando $2$ minutos.
A pilha do carrinho fica [2, 3] (2 no topo), e a fila B torna-se vazia.
\item \textbf{Deslocamento para a estação 2:} o trajeto até a próxima estação consome $2$ minutos.
\textit{Tempo acumulado: $4$ minutos.}
\item \textbf{Estação 2:} o carrinho descarrega a encomenda cujo destino é a própria estação (topo da pilha). Esse descarregamento consome $1$ minuto.
A pilha agora contém apenas [3]. Como a plataforma B da estação 2 ainda tem espaço para mais uma caixa e há uma caixa na pilha do carrinho, essa caixa é colocada na plataforma B, consumindo $1$ minuto.
Em seguida, o carrinho carrega duas novas encomendas da fila B, destinadas à estação 3, gastando mais $2$ minuto.
\textit{Tempo acumulado: $8$ minutos.}
\item \textbf{Deslocamento para a estação 3:} o movimento até a próxima estação leva $2$ minutos.
\textit{Tempo acumulado: $10$ minutos.}
\item \textbf{Estação 3:} o carrinho descarrega as duas encomendas destinadas a esta estação, uma de cada vez. Cada descarregamento leva $1$ minuto, somando $2$ minutos.
\textit{Tempo acumulado: $12$ minutos.}
\item Como todas as filas das plataformas B estão vazias e o carrinho encontra-se sem encomendas, o processo é encerrado.
\end{enumerate}
\textbf{Tempo total necessário:} $12$ minutos.
\end{ProblemaAutor}
\end{document}

View File

@@ -0,0 +1 @@
12

View File

@@ -0,0 +1,64 @@
{
"version": "1.0",
"problem": {
"title": "O Problema dos Pacotes Viajantes",
"event": "",
"time_limit": 3.0,
"memory_limit_mb": 256,
"input_file": "stdin",
"output_file": "stdout",
"interactive": false,
"grader": false,
"subject": {
"en_us": [
"queue", "stack"
],
"pt_br": [
"fila", "pilha"
],
"es": [
""
]
}
},
"author": {
"name": "UVA - 10172",
"affiliation": "",
"country": "",
"email": ""
},
"build": {
"run_generator": false,
"run_validator": true,
"produce_outputs": true,
"run_checker": true,
"run_all_solutions": true,
"run_specific_solution": "",
"generate_io_only": false,
"generate_pdf_only": false,
"cpu_count": 1,
"build_pdf": true,
"pdf_format": "ds",
"io_samples": 1
},
"solutions": {
"main-ac": "ac.cpp",
"alternative-ac": [],
"wrong-answer": [],
"time-limit": [],
"time-limit-or-ac": [],
"time-limit-or-memory-limit": [],
"memory-limit": [],
"presentation-error": [],
"runtime-error": []
},
"polygon_config": {
"id": ""
},
"boca_config": {
"time_limit": 3,
"number_of_repetitions": 1,
"maximum_memory_mb": 512,
"maximum_output_size_kb": 24096
}
}

View File

@@ -0,0 +1,62 @@
#include <bits/stdc++.h>
using namespace std;
#define sz(x) ((int)x.size())
void solve()
{
int N, S, Q;
cin >> N >> S >> Q;
vector<queue<int>> cargoes(N);
int totalCargoes = 0;
for (int i = 0; i < N; i++)
{
int q;
cin >> q;
totalCargoes += q;
for (int j = 0; j < q; j++)
{
int c;
cin >> c;
cargoes[i].push(c - 1);
}
}
stack<int> carrier;
int station = 0, totalTime = 0;
for (int cargoesDelivered = 0; cargoesDelivered < totalCargoes;)
{
while (!carrier.empty() && (carrier.top() == station || sz(cargoes[station]) < Q))
{
if (carrier.top() == station)
{
cargoesDelivered++;
}
else
{
cargoes[station].push(carrier.top());
}
carrier.pop();
totalTime++;
}
while (!cargoes[station].empty() && sz(carrier) < S)
{
carrier.push(cargoes[station].front());
cargoes[station].pop();
totalTime++;
}
station = (station + 1) % N;
if (cargoesDelivered < totalCargoes)
totalTime += 2; // move to next station
}
cout << totalTime << endl;
}
int main()
{
int t; cin >> t;
while (t--) solve();
return 0;
}

View File

@@ -0,0 +1,19 @@
#include "testlib.h"
#include <bits/stdc++.h>
using namespace std;
int main(int argc, char* argv[]) {
setName("compare two signed int%d's", 8 * int(sizeof(int)));
registerTestlibCmd(argc, argv);
int ja = ans.readInt();
int pa = ouf.readInt();
if (ja != pa)
quitf(_wa, "expected %d, found %d", ja, pa);
quitf(_ok, "answer is %d", ja);
}

View File

@@ -0,0 +1,83 @@
#include "testlib.h"
#include <bits/stdc++.h>
using namespace std;
const int MIN_N = 0;
const int MAX_N = 100;
const int rnd_test_n = 100;
template <typename T> void append(vector<T> &dest, const vector<T> &orig) {
dest.insert(dest.end(), orig.begin(), orig.end());
}
string output_tc(int x, int y) {
ostringstream oss;
oss << x << " " << y << endl;
return oss.str();
}
vector<string> generate_sample_tests() {
vector<string> tests;
tests.push_back(output_tc(1, 1));
tests.push_back(output_tc(2, 2));
tests.push_back(output_tc(0, 0));
return tests;
}
vector<string> generate_manual_tests() {
vector<string> tests;
tests.push_back(output_tc(100, 0));
tests.push_back(output_tc(0, 100));
return tests;
}
string rnd_test(int i){
int min_n = MIN_N;
int max_n = MAX_N;
if(i<rnd_test_n / 3){
max_n = 5;
}
else if(i<rnd_test_n / 2){
max_n = 20;
}
int x = rnd.next(min_n, max_n);
int y = rnd.next(min_n, max_n);
return(output_tc(x, y));
}
vector<string> generate_random_tests() {
vector<string> tests;
for (int i = 0; i < rnd_test_n; i++){
tests.push_back(rnd_test(i));
}
return tests;
}
string extreme_test_1(){
return(output_tc(100, 100));
}
vector<string> generate_extreme_tests(){
vector<string> tests;
tests.push_back(extreme_test_1());
return tests;
}
int main(int argc, char *argv[]) {
registerGen(argc, argv, 1);
vector<string> tests;
size_t test = 0;
append(tests, generate_sample_tests());
append(tests, generate_manual_tests());
append(tests, generate_random_tests());
append(tests, generate_extreme_tests());
for (const auto &t : tests) {
startTest(++test);
cout << t;
}
return 0;
}

View File

@@ -0,0 +1 @@
generator

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,33 @@
#include "testlib.h"
#include <bits/stdc++.h>
using namespace std;
int main(int argc, char* argv[]) {
registerValidation(argc, argv);
int t = inf.readInt(1, 100, "t");
inf.readEoln();
for (int i = 0; i < t; i++) {
int n = inf.readInt(2, 100);
inf.readSpace();
int s = inf.readInt(1, 100);
inf.readSpace();
int q = inf.readInt(1, 100);
inf.readEoln();
for (int j = 1; j <= n; j++) {
int cargoes = inf.readInt(0, q, "cargoes");
for (int k = 1; k <= cargoes; k++) {
inf.readSpace();
int destination = inf.readInt(1, n, "destination");
ensuref(j != destination, "Cargoe cannot have its station as its destination");
}
inf.readEoln();
}
}
inf.readEof();
return 0;
}

View File

@@ -0,0 +1,17 @@
O sistema de entregas automáticas da cidade de Logitown é composto por um anel de estações interligadas. Em cada estação, pequenas encomendas aguardam para serem levadas até seus destinos, que também são outras estações do mesmo anel.
Um único carrinho autônomo é responsável por realizar todas as entregas. Ele percorre continuamente as estações em ordem crescente: após visitar a estação $N$, retorna para a estação $1$, repetindo o ciclo até que todas as encomendas tenham sido entregues. No início da operação, o carrinho está vazio e parado na estação $1$.
Cada estação possui duas plataformas de operação:
\begin{itemize}
\item \textbf{Plataforma A}: recebe as encomendas que chegaram ao seu destino final.
\item \textbf{Plataforma B}: mantém uma fila de encomendas que ainda precisam ser enviadas para outras estações.
\end{itemize}
O carrinho possui uma pilha interna com capacidade limitada, utilizada para armazenar as encomendas em trânsito. Como se trata de uma pilha, apenas a encomenda localizada no topo pode ser retirada. Ao chegar a uma estação, o carrinho inicia o processo de \textbf{descarregamento}: ele retira do topo da pilha todas as encomendas destinadas àquela estação, uma a uma, depositando-as na plataforma A. Se encontrar uma encomenda destinada a outra estação, ele tenta colocá-la na fila da plataforma B, caso haja espaço disponível. Se a fila estiver cheia, o descarregamento é interrompido.
Em seguida, ocorre o \textbf{carregamento}: o carrinho pega, na ordem da fila da plataforma B, as encomendas que aguardam envio e as adiciona ao topo da pilha, até que esta atinja sua capacidade máxima ou a fila fique vazia.
Cada operação de carregamento ou descarregamento de uma encomenda leva exatamente $1$ minuto, enquanto o deslocamento entre duas estações consecutivas consome $2$ minutos. O processo continua até que não restem encomendas no carrinho nem em nenhuma das plataformas B.
Dado o estado inicial das plataformas, determine o tempo total necessário para que todas as encomendas sejam entregues às suas respectivas estações.

View File

@@ -0,0 +1,5 @@
A primeira linha contém um inteiro $T$ $(1 \le T \le 100)$ indicando o número de conjuntos de teste.
Cada conjunto de teste começa com três inteiros $N$, $S$ e $Q$, onde $N$ $(2 \le N \le 100)$ é o número de estações no anel, $S$ $(1 \le S \le 100)$ é a capacidade máxima do carrinho (em encomendas), e $Q$ $(1 \le Q \le 100)$ é a capacidade máxima da fila de cada estação.
Em seguida, seguem $N$ linhas. A $i$-ésima linha contém um inteiro $q_i$ $(0 \le q_i \le Q)$ indicando o número de encomendas na fila da estação $i$, seguido de $q_i$ inteiros representando os destinos dessas encomendas $(1 \le \text{destino} \le N, \ \text{destino} \ne i)$, listados da frente para o fim da fila.

View File

@@ -0,0 +1,26 @@
Neste caso de teste, o sistema conta com três estações dispostas em anel. O carrinho inicia vazio na estação 1, e cada estação possui capacidade máxima de duas encomendas em sua fila (plataforma B). O objetivo é calcular o tempo total necessário para que todas as encomendas sejam entregues em suas respectivas estações de destino.
\textbf{Passo a passo da simulação:}
\begin{enumerate}
\item \textbf{Estação 1:} o carrinho carrega as duas encomendas disponíveis na fila B, com destinos 2 e 3. Cada carregamento leva $1$ minuto, totalizando $2$ minutos.
A pilha do carrinho fica [2, 3] (2 no topo), e a fila B torna-se vazia.
\item \textbf{Deslocamento para a estação 2:} o trajeto até a próxima estação consome $2$ minutos.
\textit{Tempo acumulado: $4$ minutos.}
\item \textbf{Estação 2:} o carrinho descarrega a encomenda cujo destino é a própria estação (topo da pilha). Esse descarregamento consome $1$ minuto.
A pilha agora contém apenas [3]. Como a plataforma B da estação 2 ainda tem espaço para mais uma caixa e há uma caixa na pilha do carrinho, essa caixa é colocada na plataforma B, consumindo $1$ minuto.
Em seguida, o carrinho carrega duas novas encomendas da fila B, destinadas à estação 3, gastando mais $2$ minuto.
\textit{Tempo acumulado: $8$ minutos.}
\item \textbf{Deslocamento para a estação 3:} o movimento até a próxima estação leva $2$ minutos.
\textit{Tempo acumulado: $10$ minutos.}
\item \textbf{Estação 3:} o carrinho descarrega as duas encomendas destinadas a esta estação, uma de cada vez. Cada descarregamento leva $1$ minuto, somando $2$ minutos.
\textit{Tempo acumulado: $12$ minutos.}
\item Como todas as filas das plataformas B estão vazias e o carrinho encontra-se sem encomendas, o processo é encerrado.
\end{enumerate}
\textbf{Tempo total necessário:} $12$ minutos.

View File

@@ -0,0 +1 @@
Para cada conjunto de teste, deve-se imprimir um único número inteiro representando o total de minutos necessários para que todas as encomendas sejam entregues às plataformas A correspondentes.