rbx.cp 0.6.1__py3-none-any.whl → 0.8.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rbx/box/cd.py +32 -4
- rbx/box/cli.py +82 -34
- rbx/box/code.py +131 -82
- rbx/box/contest/main.py +25 -0
- rbx/box/creation.py +3 -0
- rbx/box/global_package.py +74 -0
- rbx/box/linting.py +76 -7
- rbx/box/package.py +6 -19
- rbx/box/presets/__init__.py +4 -4
- rbx/box/remote.py +19 -0
- rbx/box/sanitizers/warning_stack.py +3 -3
- rbx/box/solutions.py +13 -7
- rbx/box/stats.py +10 -0
- rbx/box/stresses.py +45 -64
- rbx/box/stressing/finder_parser.py +11 -16
- rbx/box/tasks.py +33 -22
- rbx/box/tooling/boca/scraper.py +1 -1
- rbx/grading/caching.py +98 -47
- rbx/grading/debug_context.py +31 -0
- rbx/grading/grading_context.py +96 -0
- rbx/grading/judge/cacher.py +93 -21
- rbx/grading/judge/sandbox.py +6 -3
- rbx/grading/judge/sandboxes/timeit.py +1 -1
- rbx/grading/judge/storage.py +169 -35
- rbx/grading/profiling.py +126 -0
- rbx/grading/steps.py +44 -16
- rbx/grading/steps_with_caching.py +52 -26
- rbx/resources/presets/default/contest/.gitignore +2 -0
- rbx/resources/presets/default/contest/contest.rbx.yml +18 -4
- rbx/resources/presets/default/contest/statement/contest.rbx.tex +25 -86
- rbx/resources/presets/default/contest/statement/icpc.sty +322 -0
- rbx/resources/presets/default/contest/statement/instructions.tex +40 -0
- rbx/resources/presets/default/contest/statement/logo.png +0 -0
- rbx/resources/presets/default/contest/statement/template.rbx.tex +45 -36
- rbx/resources/presets/default/preset.rbx.yml +8 -6
- rbx/resources/presets/default/problem/problem.rbx.yml +20 -17
- rbx/resources/presets/default/problem/statement/icpc.sty +322 -0
- rbx/resources/presets/default/problem/statement/template.rbx.tex +47 -79
- {rbx_cp-0.6.1.dist-info → rbx_cp-0.8.0.dist-info}/METADATA +4 -1
- {rbx_cp-0.6.1.dist-info → rbx_cp-0.8.0.dist-info}/RECORD +48 -41
- rbx/resources/presets/default/contest/statement/olymp.sty +0 -250
- rbx/resources/presets/default/problem/statement/olymp.sty +0 -250
- /rbx/resources/presets/default/problem/{gen.cpp → gens/gen.cpp} +0 -0
- /rbx/resources/presets/default/problem/{tests → manual_tests}/samples/000.in +0 -0
- /rbx/resources/presets/default/problem/{tests → manual_tests}/samples/001.in +0 -0
- /rbx/resources/presets/default/problem/{random.py → testplan/random.py} +0 -0
- /rbx/resources/presets/default/problem/{random.txt → testplan/random.txt} +0 -0
- {rbx_cp-0.6.1.dist-info → rbx_cp-0.8.0.dist-info}/LICENSE +0 -0
- {rbx_cp-0.6.1.dist-info → rbx_cp-0.8.0.dist-info}/WHEEL +0 -0
- {rbx_cp-0.6.1.dist-info → rbx_cp-0.8.0.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,322 @@
|
|
1
|
+
\usepackage{caption}
|
2
|
+
\usepackage{epsfig}
|
3
|
+
\usepackage{moreverb}
|
4
|
+
\usepackage{float}
|
5
|
+
\usepackage{fancyvrb}
|
6
|
+
\usepackage{multicol}
|
7
|
+
\usepackage{hyperref}
|
8
|
+
\usepackage{ifthen}
|
9
|
+
\usepackage{titlesec}
|
10
|
+
\usepackage{pmboxdraw}
|
11
|
+
\usepackage{xcolor}
|
12
|
+
\usepackage{colortbl}
|
13
|
+
\usepackage{tikz}
|
14
|
+
\usepackage{subcaption}
|
15
|
+
\usetikzlibrary{matrix,positioning,fit,scopes,chains}
|
16
|
+
\let\mytitleformat\titleformat
|
17
|
+
\let\titleformat\relax
|
18
|
+
\usepackage{logicpuzzle}
|
19
|
+
\usepackage{enumitem}
|
20
|
+
\usepackage{amsfonts}
|
21
|
+
\usepackage[brazil]{babel}
|
22
|
+
\usepackage[utf8]{inputenc}
|
23
|
+
\usepackage[T1]{fontenc}
|
24
|
+
\usepackage{indentfirst}
|
25
|
+
\usepackage{pdftexcmds}
|
26
|
+
\usepackage{amsmath}
|
27
|
+
|
28
|
+
\captionsetup[figure]{labelformat=empty}
|
29
|
+
\setlist[itemize]{noitemsep, nolistsep}
|
30
|
+
|
31
|
+
\setlength{\marginparwidth}{0pt}
|
32
|
+
\setlength{\oddsidemargin}{-0.25cm}
|
33
|
+
\setlength{\evensidemargin}{-0.25cm}
|
34
|
+
\setlength{\marginparsep}{0pt}
|
35
|
+
|
36
|
+
\setlength{\parindent}{0cm}
|
37
|
+
\setlength{\parskip}{5pt}
|
38
|
+
|
39
|
+
\setlength{\textwidth}{16.5cm}
|
40
|
+
\setlength{\textheight}{25.5cm}
|
41
|
+
|
42
|
+
\setlength{\voffset}{-1in}
|
43
|
+
|
44
|
+
\newcommand{\insereArquivo}[1]{
|
45
|
+
\ifnum0\pdffilesize{#1}>0
|
46
|
+
\VerbatimInput[xleftmargin=0mm,numbers=none,obeytabs=true]{#1}\vspace{.5em}
|
47
|
+
\fi
|
48
|
+
}
|
49
|
+
|
50
|
+
\newcommand{\insereTexto}[1]{
|
51
|
+
\texttt{#1}
|
52
|
+
}
|
53
|
+
|
54
|
+
\def\portuguese{pt}
|
55
|
+
\ifx\lang\portuguese
|
56
|
+
\def\strTaskSheet{Caderno de Problemas}
|
57
|
+
\def\strSolutionSheet{Caderno de Soluções}
|
58
|
+
\def\strSponsored{Patrocínio}
|
59
|
+
\def\strHosted{Realização}
|
60
|
+
\def\strOrganized{Organização}
|
61
|
+
\def\strProblem{Problema }
|
62
|
+
\def\strExplanation{Explicação do exemplo }
|
63
|
+
\def\strInput{Entrada}
|
64
|
+
\def\strOutput{Saída}
|
65
|
+
\def\strInteraction{Interação}
|
66
|
+
\def\strSampleinput{Exemplo de entrada }
|
67
|
+
\def\strSampleoutput{Exemplo de saída }
|
68
|
+
\def\strSampleinteraction{Exemplo de interação }
|
69
|
+
\def\strInteractionread{Leitura}
|
70
|
+
\def\strInteractionwrite{Escrita}
|
71
|
+
\def\strExamples{Exemplos}
|
72
|
+
\def\strSolution{Solução}
|
73
|
+
\def\strNotes{Observações}
|
74
|
+
\else
|
75
|
+
\def\strTaskSheet{Task Sheet}
|
76
|
+
\def\strSolutionSheet{Solution Sheet}
|
77
|
+
\def\strSponsored{Sponsored by}
|
78
|
+
\def\strHosted{Hosted by}
|
79
|
+
\def\strOrganized{Organized by}
|
80
|
+
\def\strProblem{Problem }
|
81
|
+
\def\strExplanation{Explanation of sample }
|
82
|
+
\def\strInput{Input}
|
83
|
+
\def\strOutput{Output}
|
84
|
+
\def\strInteraction{Interaction}
|
85
|
+
\def\strSampleinput{Sample input }
|
86
|
+
\def\strSampleoutput{Sample output }
|
87
|
+
\def\strSampleinteraction{Sample interaction }
|
88
|
+
\def\strInteractionread{Read}
|
89
|
+
\def\strInteractionwrite{Write}
|
90
|
+
\def\strExamples{Examples}
|
91
|
+
\def\strSolution{Solution}
|
92
|
+
\def\strNotes{Notes}
|
93
|
+
\fi
|
94
|
+
|
95
|
+
\newcommand{\includeProblem}[3][]
|
96
|
+
{
|
97
|
+
\newpage
|
98
|
+
\def\ProblemLetter{#1}
|
99
|
+
\ifx\ProblemLetter\empty
|
100
|
+
{\huge{\bf #2}}
|
101
|
+
\else
|
102
|
+
{\huge{\bf \strProblem #1. #2}}
|
103
|
+
\fi
|
104
|
+
#3
|
105
|
+
}
|
106
|
+
|
107
|
+
\newcommand{\inputdesc}[1]{
|
108
|
+
\subsection*{\strInput}
|
109
|
+
{#1} }
|
110
|
+
|
111
|
+
\newcommand{\inputdescline}[1]{
|
112
|
+
\subsection*{\strInput}
|
113
|
+
\strInputdescline {#1} }
|
114
|
+
|
115
|
+
\newcommand{\outputdesc}[1]{
|
116
|
+
\subsection*{\strOutput}
|
117
|
+
{#1}}
|
118
|
+
|
119
|
+
\newcommand{\interactiondesc}[1]{
|
120
|
+
\subsection*{\strInteraction}
|
121
|
+
{#1}}
|
122
|
+
|
123
|
+
\newcommand{\sampledesc}[2]{
|
124
|
+
\subsection*{\strExplanation #1}
|
125
|
+
{#2}}
|
126
|
+
|
127
|
+
|
128
|
+
\newcommand{\incat}[1]{sample-#1.in}
|
129
|
+
\newcommand{\solcat}[1]{sample-#1.sol}
|
130
|
+
\newcounter{problemcounter}
|
131
|
+
\setcounter{problemcounter}{0}
|
132
|
+
\newcounter{exemplocounter}[problemcounter]
|
133
|
+
\setcounter{exemplocounter}{0}
|
134
|
+
|
135
|
+
\newcommand\mc[1]{\multicolumn{1}{l}{#1}}
|
136
|
+
\newcommand{\example}[2]{
|
137
|
+
{\small
|
138
|
+
|
139
|
+
\stepcounter{exemplocounter}
|
140
|
+
|
141
|
+
\begin{minipage}[c]{0.945\textwidth}
|
142
|
+
\begin{center}
|
143
|
+
\begin{tabular}{|l|l|}
|
144
|
+
\mc{\bf{\strSampleinput \arabic{exemplocounter}}}
|
145
|
+
&
|
146
|
+
\mc{\bf{\strSampleoutput \arabic{exemplocounter}}} \\
|
147
|
+
|
148
|
+
\hline
|
149
|
+
\begin{minipage}[t]{0.5\textwidth}
|
150
|
+
\vspace{0.01cm}
|
151
|
+
\insereArquivo{#1}
|
152
|
+
\vspace{-0.2cm}
|
153
|
+
\end{minipage}
|
154
|
+
&
|
155
|
+
\begin{minipage}[t]{0.5\textwidth}
|
156
|
+
\vspace{0.01cm}
|
157
|
+
\insereArquivo{#2}
|
158
|
+
\vspace{-0.2cm}
|
159
|
+
\end{minipage} \\
|
160
|
+
\hline
|
161
|
+
\end{tabular}
|
162
|
+
\end{center}
|
163
|
+
\end{minipage} % leave next line empty
|
164
|
+
|
165
|
+
}
|
166
|
+
} % example
|
167
|
+
|
168
|
+
\newcommand{\exampleInteractive}{
|
169
|
+
{\small
|
170
|
+
|
171
|
+
\stepcounter{exemplocounter}
|
172
|
+
|
173
|
+
\begin{center}
|
174
|
+
\begin{tabular}{lcr}
|
175
|
+
\begin{minipage}[t]{0.3\textwidth}
|
176
|
+
\hspace{-0.19cm}\bf{\strInteractionread}
|
177
|
+
\end{minipage}
|
178
|
+
&
|
179
|
+
\begin{minipage}[t]{0.3\textwidth}
|
180
|
+
\bf{\strSampleinteraction \arabic{exemplocounter}}
|
181
|
+
\end{minipage}
|
182
|
+
&
|
183
|
+
\begin{minipage}[t]{0.3\textwidth}
|
184
|
+
\hfill \bf{\strInteractionwrite}
|
185
|
+
\end{minipage}
|
186
|
+
\end{tabular}
|
187
|
+
\end{center}
|
188
|
+
\vspace{-0.5cm}
|
189
|
+
}
|
190
|
+
} % exampleInteractive
|
191
|
+
|
192
|
+
\newcommand{\interaction}[2]{
|
193
|
+
{\small
|
194
|
+
|
195
|
+
\ifthenelse{\equal{#2}{\string 0}}{
|
196
|
+
\vspace{-0.3cm}
|
197
|
+
\begin{tabular}{|l|}
|
198
|
+
\hline
|
199
|
+
\begin{minipage}[t]{0.55\textwidth}
|
200
|
+
\vspace{0.01cm}
|
201
|
+
\insereTexto{#1}
|
202
|
+
\vspace{0.28cm}
|
203
|
+
\end{minipage}
|
204
|
+
\\
|
205
|
+
\hline
|
206
|
+
\end{tabular}
|
207
|
+
}{
|
208
|
+
\vspace{-0.3cm}
|
209
|
+
\hfill
|
210
|
+
\begin{tabular}{|l|}
|
211
|
+
\hline
|
212
|
+
\begin{minipage}[t]{0.55\textwidth}
|
213
|
+
\vspace{0.01cm}
|
214
|
+
\insereTexto{#1}
|
215
|
+
\vspace{0.28cm}
|
216
|
+
\end{minipage}
|
217
|
+
\\
|
218
|
+
\hline
|
219
|
+
\end{tabular}
|
220
|
+
}
|
221
|
+
|
222
|
+
}
|
223
|
+
} % interaction
|
224
|
+
|
225
|
+
\newcommand{\explanation}[1]{
|
226
|
+
\textbf{\strExplanation\theexemplocounter}
|
227
|
+
|
228
|
+
{#1} % leave empty line
|
229
|
+
|
230
|
+
} % explanation
|
231
|
+
|
232
|
+
\addtolength{\parskip}{0.4\baselineskip}
|
233
|
+
|
234
|
+
\pagestyle{myheadings}
|
235
|
+
|
236
|
+
\newcounter{pcounter}\setcounter{pcounter}{0}
|
237
|
+
\newcounter{qcounter}\setcounter{qcounter}{0}
|
238
|
+
|
239
|
+
\usepackage{titlesec}
|
240
|
+
|
241
|
+
\titlespacing\section{0pt}{6pt plus 4pt minus 2pt}{0pt plus 2pt minus 2pt}
|
242
|
+
\titlespacing\subsection{0pt}{6pt plus 4pt minus 2pt}{0pt plus 2pt minus 2pt}
|
243
|
+
\titlespacing\subsubsection{0pt}{6t plus 4pt minus 2pt}{0pt plus 2pt minus 2pt}
|
244
|
+
|
245
|
+
\newcommand{\InsertTitlePage}
|
246
|
+
{
|
247
|
+
\pagestyle{myheadings}
|
248
|
+
\markright{\Title -- \Year}
|
249
|
+
|
250
|
+
%%% Title Page
|
251
|
+
\begin{titlepage}
|
252
|
+
\vspace*{\fill}
|
253
|
+
\begin{center}
|
254
|
+
|
255
|
+
\includegraphics[width=8cm]{logo.png}
|
256
|
+
|
257
|
+
\vspace{0.8cm}
|
258
|
+
{\huge\bf \Title}\\[12pt]
|
259
|
+
{\large{\bf \strTaskSheet}}\\[12pt]
|
260
|
+
\vspace{1.5cm}
|
261
|
+
{\huge{\bf \Year}}
|
262
|
+
|
263
|
+
% \vspace{1cm}
|
264
|
+
% {\small \bf \strSponsored}\\[8pt]
|
265
|
+
|
266
|
+
% \includegraphics[width=16cm]{sponsors.png}
|
267
|
+
|
268
|
+
% \vspace{2cm}
|
269
|
+
% \begin{center}
|
270
|
+
% \setlength{\tabcolsep}{0.1\textwidth}
|
271
|
+
% \begin{tabular}{cc}
|
272
|
+
% {\small\bf \strHosted} & {\small\bf \strOrganized} \\
|
273
|
+
% \includegraphics[width=3cm]{host.png} & \includegraphics[width=4cm]{organizers.png} \\
|
274
|
+
% \end{tabular}
|
275
|
+
% \end{center}
|
276
|
+
|
277
|
+
\end{center}
|
278
|
+
\vspace*{\fill}
|
279
|
+
\end{titlepage}
|
280
|
+
|
281
|
+
\clearpage
|
282
|
+
}
|
283
|
+
|
284
|
+
\newcommand{\InsertEditorialTitlePage}
|
285
|
+
{
|
286
|
+
\pagestyle{myheadings}
|
287
|
+
\markright{\Title -- \Year}
|
288
|
+
|
289
|
+
%%% Title Page
|
290
|
+
\begin{titlepage}
|
291
|
+
\vspace*{\fill}
|
292
|
+
\begin{center}
|
293
|
+
|
294
|
+
\includegraphics[width=8cm]{logo.png}
|
295
|
+
|
296
|
+
\vspace{0.8cm}
|
297
|
+
{\huge\bf \Title}\\[12pt]
|
298
|
+
{\large{\bf \strSolutionSheet}}\\[12pt]
|
299
|
+
\vspace{1.5cm}
|
300
|
+
{\huge{\bf \Year}}
|
301
|
+
|
302
|
+
% \vspace{1cm}
|
303
|
+
% {\small \bf \strSponsored}\\[8pt]
|
304
|
+
|
305
|
+
% \includegraphics[width=16cm]{sponsors.png}
|
306
|
+
|
307
|
+
% \vspace{2cm}
|
308
|
+
% \begin{center}
|
309
|
+
% \setlength{\tabcolsep}{0.1\textwidth}
|
310
|
+
% \begin{tabular}{cc}
|
311
|
+
% {\small\bf \strHosted} & {\small\bf \strOrganized} \\
|
312
|
+
% \includegraphics[width=3cm]{host.png} & \includegraphics[width=4cm]{organizers.png} \\
|
313
|
+
% \end{tabular}
|
314
|
+
% \end{center}
|
315
|
+
|
316
|
+
\end{center}
|
317
|
+
\vspace*{\fill}
|
318
|
+
\end{titlepage}
|
319
|
+
|
320
|
+
\clearpage
|
321
|
+
}
|
322
|
+
|
@@ -0,0 +1,40 @@
|
|
1
|
+
\section*{General Information}
|
2
|
+
|
3
|
+
This task sheet consists of \pageref*{lastpage} pages (not counting the cover), numbered from 1 to \pageref*{lastpage}. Check if the sheet is complete.
|
4
|
+
|
5
|
+
\subsection*{Input}
|
6
|
+
|
7
|
+
\begin{itemize}
|
8
|
+
\item The input must be read from standard input.
|
9
|
+
|
10
|
+
\item All lines in the input, including the last one, end with a line break character (\texttt{\textbackslash n}).
|
11
|
+
|
12
|
+
\item When the input contains multiple space-separated values, there is exactly one whitespace character between two consecutive values on the same line.
|
13
|
+
\end{itemize}
|
14
|
+
|
15
|
+
\subsection*{Output}
|
16
|
+
|
17
|
+
\begin{itemize}
|
18
|
+
\item The output must be written to standard output.
|
19
|
+
|
20
|
+
\item The output must follow the format specified in the problem statement. The output must not contain any extra data.
|
21
|
+
|
22
|
+
\item All lines in the output, including the last one, must end with a line break character (\texttt{\textbackslash n}).
|
23
|
+
|
24
|
+
\item When a line in the output displays multiple space-separated values, there must be exactly one whitespace character between two consecutive values.
|
25
|
+
|
26
|
+
\item When an output value is a real number, use at least the number of decimal places corresponding to the precision required in the problem statement.
|
27
|
+
\end{itemize}
|
28
|
+
|
29
|
+
% \subsection*{Interactive Problems}
|
30
|
+
|
31
|
+
% The contest may contain interactive problems. In this type of problem, the input data provided to your program may not be predetermined but is instead specifically constructed for your solution. The judge writes a special program (the interactor), whose output is transferred to your solution's input, and your program's output is sent to the interactor's input. In other words, your solution and the interactor exchange data and may decide what to print based on the communication history.
|
32
|
+
|
33
|
+
% When writing a solution for an interactive problem, it is important to remember that if you print any data, it may first be stored in an internal \textit{buffer} and not immediately transferred to the interactor. To avoid this situation, you must use a special \textit{flush} operation every time you print data. These flush operations are available in the standard libraries of almost all programming languages:
|
34
|
+
|
35
|
+
% \begin{itemize}
|
36
|
+
% \item \texttt{fflush(stdout)} in \texttt{C}.
|
37
|
+
% \item \texttt{cout.flush()} in \texttt{C++}.
|
38
|
+
% \item \texttt{sys.stdout.flush()} in \texttt{Python}.
|
39
|
+
% \item \texttt{System.out.flush()} in \texttt{Java}.
|
40
|
+
% \end{itemize}
|
Binary file
|
@@ -1,42 +1,51 @@
|
|
1
|
-
|
1
|
+
%- if vars.show_problem is truthy
|
2
|
+
\includeProblem
|
2
3
|
%- if problem.short_name is defined
|
3
|
-
|
4
|
+
[\VAR{problem.short_name}]
|
4
5
|
%- endif
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
%- if problem.blocks.
|
14
|
-
\
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
%-
|
22
|
-
|
23
|
-
\
|
24
|
-
|
25
|
-
%-
|
26
|
-
\
|
27
|
-
|
28
|
-
\
|
29
|
-
%- endfor
|
30
|
-
|
31
|
-
|
32
|
-
\
|
33
|
-
|
6
|
+
{\VAR{problem.title | escape}}{
|
7
|
+
|
8
|
+
\VAR{problem.blocks.legend}
|
9
|
+
|
10
|
+
%- if problem.blocks.input is defined
|
11
|
+
\inputdesc{\VAR{problem.blocks.input}}
|
12
|
+
%- endif
|
13
|
+
|
14
|
+
%- if problem.blocks.output is defined
|
15
|
+
\outputdesc{\VAR{problem.blocks.output}}
|
16
|
+
%- endif
|
17
|
+
|
18
|
+
%- if problem.blocks.interaction is defined
|
19
|
+
\interactiondesc{\VAR{problem.blocks.interaction}}
|
20
|
+
%- endif
|
21
|
+
|
22
|
+
%- if problem.samples
|
23
|
+
\vspace{0.3cm}
|
24
|
+
\subsection*{\strExamples}
|
25
|
+
%- for sample in problem.samples
|
26
|
+
%- if sample.interaction is not none
|
27
|
+
\exampleInteractive
|
28
|
+
%- for entry in sample.interaction.entries
|
29
|
+
\interaction{\VAR{entry.data}}{\VAR{entry.pipe}}
|
30
|
+
%- endfor
|
31
|
+
%- else
|
32
|
+
\example{\VAR{sample.inputPath}}
|
33
|
+
{\VAR{sample.outputPath if sample.outputPath is not none else ''}}
|
34
|
+
%- endif
|
35
|
+
%- if sample.explanation is not none
|
36
|
+
\explanation{\VAR{sample.explanation}}
|
37
|
+
%- endif
|
38
|
+
%- endfor
|
39
|
+
%- endif
|
40
|
+
|
41
|
+
%- if problem.blocks.notes is defined
|
42
|
+
\subsection*{\strNotes}
|
43
|
+
\VAR{problem.blocks.notes}
|
44
|
+
%- endif
|
45
|
+
}
|
34
46
|
%- endif
|
35
47
|
|
36
|
-
%- if problem.blocks.editorial is
|
37
|
-
\
|
48
|
+
%- if problem.blocks.editorial is nonnull and vars.editorial is truthy
|
49
|
+
\subsection*{\strSolution}
|
38
50
|
\VAR{problem.blocks.editorial}
|
39
51
|
%- endif
|
40
|
-
|
41
|
-
|
42
|
-
\end{problem}
|
@@ -1,12 +1,14 @@
|
|
1
|
+
---
|
2
|
+
# yaml-language-server: $schema=https://rsalesc.github.io/rbx/schemas/Preset.json
|
1
3
|
name: "default"
|
2
|
-
uri: rsalesc/rbx/rbx/resources/presets/default
|
4
|
+
uri: "rsalesc/rbx/rbx/resources/presets/default"
|
3
5
|
problem: "problem"
|
4
6
|
contest: "contest"
|
5
7
|
tracking:
|
6
8
|
problem:
|
7
|
-
- path: statement/template.rbx.tex
|
8
|
-
- path: statement/
|
9
|
+
- path: "statement/template.rbx.tex"
|
10
|
+
- path: "statement/icpc.sty"
|
9
11
|
contest:
|
10
|
-
- path: statement/template.rbx.tex
|
11
|
-
- path: statement/
|
12
|
-
- path: statement/contest.rbx.tex
|
12
|
+
- path: "statement/template.rbx.tex"
|
13
|
+
- path: "statement/icpc.sty"
|
14
|
+
- path: "statement/contest.rbx.tex"
|
@@ -1,36 +1,38 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
---
|
2
|
+
# yaml-language-server: $schema=https://rsalesc.github.io/rbx/schemas/Package.json
|
3
3
|
name: "new-problem"
|
4
|
-
timeLimit: 1000
|
5
|
-
memoryLimit: 256
|
6
|
-
checker: {
|
7
|
-
validator: {
|
4
|
+
timeLimit: 1000 # ms
|
5
|
+
memoryLimit: 256 # MiB
|
6
|
+
checker: {path: "wcmp.cpp"} # Download others from testlib with `rbx download checker`
|
7
|
+
validator: {path: "validator.cpp"}
|
8
8
|
generators:
|
9
|
-
- path: "gen.cpp"
|
9
|
+
- path: "gens/gen.cpp"
|
10
10
|
name: "gen"
|
11
11
|
testcases:
|
12
12
|
- name: "samples"
|
13
|
-
testcaseGlob: "
|
13
|
+
testcaseGlob: "manual_tests/samples/*.in" # Pattern for the sample inputs.
|
14
14
|
- name: "random"
|
15
15
|
generatorScript:
|
16
|
-
path: "random.txt" # Static generator script.
|
16
|
+
path: "testplan/random.txt" # Static generator script (testplan).
|
17
17
|
- name: "program-random"
|
18
18
|
generatorScript:
|
19
|
-
path: "random.py" # Generator script written programatically.
|
19
|
+
path: "testplan/random.py" # Generator script written programatically.
|
20
20
|
solutions:
|
21
21
|
- path: "sols/main.cpp"
|
22
|
-
outcome: ACCEPTED
|
22
|
+
outcome: "ACCEPTED"
|
23
23
|
- path: "sols/wa.cpp"
|
24
|
-
outcome: WRONG_ANSWER
|
24
|
+
outcome: "WRONG_ANSWER"
|
25
25
|
- path: "sols/slow.cpp"
|
26
|
-
outcome: TLE_OR_RTE # Can be TLE too
|
26
|
+
outcome: "TLE_OR_RTE" # Can be TLE too
|
27
27
|
statements:
|
28
28
|
- name: "statement-en"
|
29
29
|
title: "New Problem"
|
30
30
|
path: "statement/statement.rbx.tex" # Open this file to edit your statement.
|
31
|
-
type: rbxTeX
|
31
|
+
type: "rbxTeX"
|
32
32
|
language: "en"
|
33
|
-
assets:
|
33
|
+
assets: # Define assets for the statement.
|
34
|
+
- "statement/icpc.sty"
|
35
|
+
- "statement/*.png"
|
34
36
|
configure:
|
35
37
|
- type: "rbx-tex" # Convert rbxTeX to TeX
|
36
38
|
template: "statement/template.rbx.tex"
|
@@ -51,6 +53,7 @@ unitTests:
|
|
51
53
|
outcome: "ACCEPTED"
|
52
54
|
- glob: "unit/checker/wa*"
|
53
55
|
outcome: "WRONG_ANSWER"
|
56
|
+
# Can be used in the validator, checker, interactor, stress tests
|
57
|
+
# and in the statement.
|
54
58
|
vars:
|
55
|
-
|
56
|
-
|
59
|
+
MAX_N: 1000000000
|