From: Marius Gavrilescu Date: Mon, 9 Mar 2015 09:10:48 +0000 (+0200) Subject: Merge branch 'master' into newmc X-Git-Url: http://git.ieval.ro/?a=commitdiff_plain;h=f52063ee557c4afcf17159a026da17681c9beda7;hp=137c1af1d5f89cfd8ba361eb03abeef8bc60bc9b;p=plack-app-gruntmaster.git Merge branch 'master' into newmc Conflicts: tmpl/pb_entry.en --- diff --git a/Makefile.PL b/Makefile.PL index 021ffdb..2b025b1 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -10,10 +10,11 @@ WriteMakefile( LICENSE => 'AGPL_3', SIGN => 1, clean => { - FILES => 'static/css/ static/js.js static/js.map static/js/' + FILES => 'static/css/ static/js.js css/logos.css static/logos.png static/js.map static/js/' }, BUILD_REQUIRES => { qw/CSS::Minifier::XS 0 + CSS::SpriteMaker 0 File::Slurp 0 JavaScript::Minifier::XS 0 Test::MockTime 0 diff --git a/a/about.en b/a/about.en new file mode 100644 index 0000000..e46f67e --- /dev/null +++ b/a/about.en @@ -0,0 +1,19 @@ +We are a group of coders of all ages, passionate about problem solving and algorithms. Together, we created MindCoding, an online platform where anyone can learn algorithms and test their skills. Join us, teach yourself new things and have fun! +

+Our website provides a problem list with an online evaluation system, which means you'll find out on the spot if your solution is correct. We support a wide rande of programming languages, allowing all programers to participate, regardless of their technical background. Read from stdin and print to stdout. +

+If you take part in our coding competition (which we strongly recommend!) don't forget to check out our standings and see how well you did compared to your friends. +

+Put your mind to work and code! + +

How to use the website

+First you need to create an account. For this click the Account button in the navbar.
+When you want to do an action that needs an account you will be required to log in.
+To submit a problem you can either paste your code into the text area for the corresponding problem or browse for the source.
+To take part in a contest, you don't need to register to a particular one, you just need to access its page after the contest starts. +

+Here are example solutions for the A+B problem in all languages. + + diff --git a/a/about.en.title b/a/about.en.title new file mode 100644 index 0000000..f461446 --- /dev/null +++ b/a/about.en.title @@ -0,0 +1 @@ +About / Help diff --git a/a/fin.en b/a/fin.en new file mode 100644 index 0000000..b350526 --- /dev/null +++ b/a/fin.en @@ -0,0 +1,82 @@ +

Standings

+ +
RankNameFinal 1Final 2Total +
1Alex Velea 4516831134 +
2Rares Buhai 502431933 +
3Patcas Csaba 175287462 +
4Mircea Popoveniuc 0361361 +
5Mărcuș Romulus George 2540254 +
6Onesim Robert Ioan 48147195 +
7Vlad Duta 9270162 +
8Alghisi Alessandro 1500150 +
9Adrian Craciun 90090 +
10Dan Alexandru 89089 +
11Stefan Negrus 88088 +
12Alex Cociorva 83083 +
13Nechita Sebastian 74074 +
14Plop Teodor 62062 +
15Bucevschi Alexandru 54054 +
16Costin Bianca 000 +
17Dit Dragos-Daniel 000 +
18Emanuel Truta 000 +
19Kis Levente Lorand 000 +
20Paffy Sandor000 +
+ +
+
+

Qualified

+
    +
  1. Rares Buhai +
  2. Mihai Popa +
  3. Mugurel Ionut Andreica +
  4. Vlad Duta +
  5. Romulus George Marcus +
  6. Mihai Nitu +
  7. Catalin Stefan Tiseanu +
  8. Adrian Craciun +
  9. Mihai Gheorghe +
  10. Alex Cociorva +
  11. Mircea Popoveniuc +
  12. Stefan Negrus +
  13. Teodor Ionescu +
  14. Alexandru Dan +
  15. Teodor Plop +
+
+ +
+

Waiting list

+
    +
  1. Onesim Robert Ioan +
  2. Buleandra Cristian +
  3. Ioan Vlad Petcu +
  4. Andrei Stanciu +
  5. Nathan Wildenberg +
  6. Alexandru Bucevschi +
  7. Andrei Gogonea +
  8. Felix Puscasu +
  9. Matei Paun +
  10. Gedit Ciorabai +
+
+ +
+

Qualified (Cluj)

+
    +
  1. Alex Velea +
  2. Csaba Patcas +
  3. Vasile Lup +
  4. Emanuel Truta +
  5. Sergiu Cosmin Nistor +
  6. Dragos Crisan +
  7. Bianca Costin +
  8. Tudor Octavian Pocola +
  9. Dragos-Daniel Dit +
  10. Sandor Pallfy +
  11. Alessandro Alghisi +
  12. Levente Lorand Kis +
  13. Sebastian Nechita +
+
+
diff --git a/a/fin.en.title b/a/fin.en.title new file mode 100644 index 0000000..4d60e6b --- /dev/null +++ b/a/fin.en.title @@ -0,0 +1 @@ +Final Round Participants diff --git a/a/guide.en b/a/guide.en new file mode 100644 index 0000000..c270379 --- /dev/null +++ b/a/guide.en @@ -0,0 +1,72 @@ +
+

Quick Start Guide:

+ + +
+

STEP 1: Choosing a problem from the list

+ +

In order to choose a problem click the Problems button from the + navbar.

+

Then click on the problem you want to solve. +
For example let's choose A+B problem.

+
+ +
+

STEP 2: Starting to fill the form

+ +
+

From now on we focus on Submit solution area.

+

Here we can find the form to be filled in order to upload a solution to any given problem.

+
+ +
+

STEP 3: Solution source code

+ + + + + + +
1st Option - Upload the source file
+
+ Go to Choose file button from File area and then choose the source file. +
or 2nd Option - Paste the code
+ +
+ Here are some examples for how to submit: + +
+ + +
+

STEP 4: Selecting the file format

+ +

After uploading the source code we have to choose the format + corresponding to the code we provided as solution.

+
+ +
+

...and SUBMIT

+ +

Click the Submit job button and wait for the results.

You will be redirected + to Job log page where you can see the results.

+ +
+
+ +

Good luck!

+ + +
diff --git a/a/guide.en.title b/a/guide.en.title new file mode 100644 index 0000000..1fb0ba9 --- /dev/null +++ b/a/guide.en.title @@ -0,0 +1 @@ +Quick start guide \ No newline at end of file diff --git a/a/index.en b/a/index.en index e69de29..b2a1fc2 100644 --- a/a/index.en +++ b/a/index.en @@ -0,0 +1,59 @@ +
+

Online qualification round schedule for 2015

+ + +

Each round will begin at 19:00 EET and will last one hour and a +half (90 minutes)
For any questions contact us on +#mindcoding +(irc.oftc.net)
+Read our quick-start guide
+View the combined standings +

+ +
+

MindCoding Competition — The Second Edition

+

We are excited to announce the return of MindCoding, the fun but +still challenging programming competition! It doesn't matter if you +have a job, you're in college or still in school, what really matters +is that you're passionate about problem solving. + +

Join our community and have the opportunity to learn new things and +make a name for yourself! Are you passionate about a certain +technology? Do you need a team in order to work on a project? +MindCoding will help you make new friends who share your interests. + +

The first online round is Thursday, the 12th of February. We hope +you'll join us! + +

You will have to solve 4 algorithmic problems of varying difficulty +levels, and they will be scored based on their level and your problem +solving speed. In order for a solution to be considered correct, it +must pass all of our tests. We strongly recommend getting used to our +platform by solving a few warm-up challenges. + +

Good luck and have fun! +

+ +
+

MindCoding Final Round

+Read the standings, the list of participants and the rules (Part 1 and Part 2). + +
+ +
+

MindCoding National Competition - First Edition

+

We are happy to announce the launch of MindCoding, our fun and challenging national programming competition! It doesn't matter if you have a job, you're a student or you're still in school, what really matters is your passion for problem solving. +

+Join our community and have the opportunity to learn new things and make a name of yourself! Are you passionate about a certain technology? Do you need a team for working on a project? MindCoding will help you make new friends who share your interests. +

+The first online round is this Thursday, on the 30th of January. We hope you'll join us! +

+You will have to solve 4 algorithmic problems of various difficulty levels, and they will be scored based on their level and your problem solving speed. In order for a solution to be considered correct, it must pass all of our tests. We strongly recommend getting used to our platform by solving a few warm-up challenges. +

+Good luck and have fun! +

diff --git a/a/index.en.title b/a/index.en.title index e7e81c9..2fd89ce 100644 --- a/a/index.en.title +++ b/a/index.en.title @@ -1 +1 @@ -Gruntmaster 6000 \ No newline at end of file +Home diff --git a/a/mc2015st.en b/a/mc2015st.en new file mode 100644 index 0000000..66bbd79 --- /dev/null +++ b/a/mc2015st.en @@ -0,0 +1,427 @@ + + + +
No.UserRound 1Round 2Total +
1Vlad Alexandru Gavrila132213962718 +
2Mărcuș Romulus George85714792336 +
3Oncescu Costin Andrei4957171212 +
4Denis Mita6675241191 +
5Rares Buhai4417051146 +
6Ionescu Teodor6904461136 +
7Adrian Budau1126-1126 +
8Posdarascu Eugenie Daniel8572551112 +
9Nechita Sebastian4995841083 +
10Mihai Enache492444936 +
11Stefan Negrus312605917 +
12Mihai Popa305612917 +
13Alex Cociorva310606916 +
14Constantinescu Andrei Costin594321915 +
15Ciprian Olariu289619908 +
16Banu Cristian590292882 +
17Berbecariu Flaviu452373825 +
18Kis Levente Lorand527254781 +
19Nicu Bodea478292770 +
20Alex Ionita487258745 +
21Jakub Safin-745745 +
22Andrei89616705 +
23Andrei Comăneci394306700 +
24Radu Visan697-697 +
25Ion Ureche394269663 +
26Alex Velea310338648 +
27Lucian Bicsi309298607 +
28VlasCatalin288314602 +
29Bohdan Pryshchenko-591591 +
30Lup Vasile555-555 +
31Costin Bianca229320549 +
32Robert Rada273263536 +
33Cozma Tudor Andrei248280528 +
34Mircea Popoveniuc69455524 +
35Buzu Tudor254260514 +
36Encho Mishinev-513513 +
37Alex Palcuie209304513 +
38Nathan Wildenberg265245510 +
39Ionut Bogdanescu268231499 +
40Nitu Doru Constantin222267489 +
41Bucevschi Alexandru201281482 +
42Jianu Mihail217265482 +
43Suditu Thomas-Cristian476-476 +
44Lucian Musca156319475 +
45Stanislav Ivanov248224472 +
46Tudor Costin Razvan285176461 +
47Badea Adrian Catalin222228450 +
48Crisan Dragos235211446 +
49Cheseli Rares183260443 +
50Radu Rusu162280442 +
51Alexa Tudose 163274437 +
52C210226436 +
53Danut Gabriel Matei215201416 +
54Radu Muntean-412412 +
55Alexandru Cosmin Mihai158242400 +
56Banu Denis94298392 +
57Monica Muranyi83302385 +
58Lucacel Razvan Cristian135249384 +
59Tanase Mihai Andrei160223383 +
60Diana-Elena Ghinea83298381 +
61Cojocaru Gabriel28593378 +
62Popa Andrei Marius77299376 +
63Blaj Andrei116257373 +
64Lazar Laurentiu121251372 +
65Sitaru Bogdan91277368 +
66Razvan George Ilascu105258363 +
67Gabriel Badea73282355 +
68Popescu George Aurelian142209351 +
69Serban Marius-Bogdan56294350 +
70Rusu Daniel90245335 +
71Ivan Marian76257333 +
72Morosac M. George Marian70258328 +
73Marilena Bescuca30298328 +
74Szabolcs Orban318-318 +
75Babuta Rares Mihai46269315 +
76Binica Nicolae59251310 +
77Bacotiu Gabi54255309 +
78Breahnă David0304304 +
79Cornoiu Vlad73230303 +
8030273303 +
81Totolin Cristian61235296 +
82Marin Tiberiu293-293 +
83Oana Teodorescu30262292 +
84Horia Turcuman-292292 +
85Péter Botond55236291 +
86Mihai Nitu286-286 +
87Sonia Mileva-286286 +
88Codrut-Georgian ARTENE22162283 +
89Moldovan Andrei-282282 +
90Naiden Liviu Andretti281-281 +
91Gemene Narcis-Gabriel280-280 +
92Filip Popa30245275 +
93Savulescu Stefan0273273 +
94Paun Victor Cristian0272272 +
95Ungurasu Razvan0272272 +
96Calinescu Dragos-271271 +
97Stefan-Adrian Popa270-270 +
98Bondariuc Dan Alexandru0266266 +
99George Linut65200265 +
100Niculae Alexandru-Vlad30234264 +
101Andrei Stanciu264-264 +
102Gergely David0263263 +
103Motroi Valeriu-261261 +
104Timis Razvan -261261 +
105Feraru Bogdan-260260 +
106Mag István30228258 +
107Horia Bogdan Cretescu254-254 +
108Rogoz Bogdan126128254 +
109Hasmasan Dragos64187251 +
110Iordache Ioan-Bogdan250-250 +
111Sergiu Puscas-250250 +
112Bunget Alexandru Catalin247-247 +
113Nistor Sergiu Cosmin-247247 +
114Sabau Andrei0244244 +
115Dragos Varvara0243243 +
116Filimon Marta-Diana243-243 +
117cozma diana-242242 +
118Valeri Tsolov-241241 +
119Razvan Idomir33208241 +
120Gabor Alexandru15090240 +
121Constantin Popescu-240240 +
122Stoica Andrei Toma-239239 +
123Dumitru Robert30209239 +
124Nasca Sergiu30208238 +
125Diana Elena Tudoreanu237-237 +
126Bogdan Mucenic-236236 +
127Gocz Tibor-Marian0229229 +
128Nazare Emanuel0229229 +
129Lolus14581226 +
130Kurkó Mihály-Zsolt223-223 +
131Nichita Diaconu-220220 +
132ciprian florescu-219219 +
133Taraban Dragos-Petru56162218 +
134Adina Mateescu 14474218 +
135Sbera Catalin0216216 +
136Teodora Serbanescu-210210 +
137Alex Andrei Stanciu-205205 +
138Bogdan Boboc44152196 +
139Streche Robert Catalin51144195 +
140Dit Dragos-Daniel189-189 +
141Liana Tucar-188188 +
142Alin Corodescu82105187 +
143Medan Florin-Andrei-186186 +
144Miriam Costan1830183 +
145cristina borza0178178 +
146Patrutoiu Andrei-178178 +
147Philip Dumitru30138168 +
148Zadic Darius Andrei-166166 +
149Stefan Sebastian-163163 +
150Vlad Costin Alexandru162-162 +
151Margeloiu Andrei162-162 +
152Ciofu Serban -155155 +
153Bogdan Boțocan8766153 +
154Timofte Stefan Ciprian152-152 +
155sorin olimpicu139-139 +
156Gabriel Boroghina137-137 +
157Razvan Bogdan Andrei Radoi-137137 +
158Matei Alexandru-136136 +
159Militaru Cristian-135135 +
160Eduard Poesina-130130 +
161Sebe Mircea Octavian1300130 +
162Béni Gál-130130 +
163Bonta Vlad Valentin1240124 +
164Nasca Bogdan-120120 +
165Leordean Ada Alexandra0119119 +
166Andrei Victor Serbanescu-112112 +
167Vasilut Lucian1120112 +
168Pascu Maria6046106 +
169Horia Turcuman105-105 +
170Alghisi Alessandro105-105 +
171Malina Florea105-105 +
172Micu Vlad105-105 +
173Andrei Oltean-9797 +
174Baltatu Andrei-Mircea91091 +
175Zloteanu Anastasia91-91 +
176Mustatea Radu88-88 +
177Vlad Potra87-87 +
178Barbalau Antonio87-87 +
179chiriacandrei2586-86 +
180Vlad Badelita85-85 +
181Patrick Catalin Alexandru SAVA84-84 +
182Munteanu Petru364884 +
183Armand Nicolicioiu83083 +
184Rares Stan-8383 +
185Antonio Boar82-82 +
186Ardei Claudiu81-81 +
187Cosmin Andrei Carabet81-81 +
188Tudor Ciurca80-80 +
189Cazacu Robert-8080 +
190Alexandru Suciu79079 +
191Florin Chirica76-76 +
192Cartis Andrei-Ionut75-75 +
193Drumea Vasile75-75 +
194Ioana Alexandra Antoche75-75 +
195johnsmith-7575 +
196Ciobotariu Narcis Paul Dumitru-7575 +
197Stoleru Teodora74-74 +
198Netedu Andrei73-73 +
199Alexandru Ionescu72-72 +
200Laurentiu Avasiloaie423072 +
201Coteanu Vlad71-71 +
202Andrei Diaconeasa69-69 +
203Dragoș Alin Rotaru69-69 +
204Maier Kurpé Erik68-68 +
205Octavian Crintea68-68 +
206Bonte Aurelian Emanuel67-67 +
207Ozturk Arif65-65 +
208Alexandru Dudescu64-64 +
209Mihai Chihai63-63 +
210Alexandra63-63 +
211Rusu Rares61-61 +
212Andrei Ionut Gavrila303060 +
213Zamfir Ovidiu303060 +
214Zoltan Razvan-Daniel60-60 +
215vlad turcuman303060 +
216Voicencu Teodor Octavian54-54 +
217Bogdan Constantin54-54 +
218Mihai Moldovan-5353 +
219Muresan Gabriel Alexandru05353 +
220Vancea Cosmin51-51 +
221Olaru Bogdan50-50 +
222Sima Gheorghe Eugen47-47 +
223Paun Matei47-47 +
224Laurentiu Dancu46-46 +
225Tiberiu Iorgulescu45-45 +
226Lucut Radu Ioan-4545 +
227Țoncu Daniel43-43 +
228Calin Nicolau-4141 +
229Șlincu Șerban-Ștefan41-41 +
230Tofan Alexandru Alin40-40 +
231Gasca Giorgiana39-39 +
232Berbecariu Dorin38-38 +
233Teodor Plop35-35 +
234Andrei Tanasescu30-30 +
235Irina B30-30 +
236Manda Iulian30-30 +
237Vlad Negura30-30 +
238Mihai Stan-3030 +
23930-30 +
240Toader Andrei Sorin03030 +
241Todoran Madalina-3030 +
242Tudor Blaga-3030 +
243Casapu Andreas30-30 +
244Ana Rednic30030 +
245Radu Aron30-30 +
246Alex Tatomir30-30 +
247Dragos Aioanei30-30 +
248Mihnea Alexandru Gafton30-30 +
249CHECICHES Marius-Cristian30030 +
250Mihai Beșliu30-30 +
251Radu Doros30-30 +
252Sebastian-Alex Oros30-30 +
253Remus Golgot30-30 +
254Tudor Bura30-30 +
255Vlad Negru30-30 +
256Zolcsak Zsolt30-30 +
257Darian Craciun0-0 +
258Stroia Aida-Gabriela0-0 +
259Alexandru Dima0-0 +
260Alexandru Andries0-0 +
261Civitu Anca Elena000 +
262Chereches Sergiu Alexandru0-0 +
263Dinea Eduard0-0 +
264Antoniu Bumbas-00 +
265Vlad Bieltz0-0 +
266Gherghina Bogdan000 +
267Zaharia Bogdan Constantin0-0 +
268Bogdan Salau0-0 +
269Libotean Cristina Maria0-0 +
270Dragulin Silviu0-0 +
271Emil Cenţiu0-0 +
272Stefan Ionescu0-0 +
273Alex Rotileanu0-0 +
274Pop Ioana Andreea-00 +
275Iulian Boboc0-0 +
276Kiss-Budai Matyas0-0 +
277Irimia Iustin0-0 +
278Chiorean Octavian0-0 +
279Miron Danut0-0 +
280Pop Marcus0-0 +
281StephenBerg-00 +
282Munteanu Mihail0-0 +
283Molnar Carmen Oana0-0 +
284Vizitiu Monica-Maria0-0 +
285Pirvu Rares0-0 +
286Juravle Oana000 +
287Persa Paul0-0 +
288Petre Catalin0-0 +
289Csáki Tamás0-0 +
290Andrei Preotu0-0 +
291Demian Bogdan-00 +
292Sorin Mocanu0-0 +
293Stavarache Antonio0-0 +
294Stefan Stefanescu0-0 +
295Szabó Károly000 +
296Teodora Dita0-0 +
297Cristea Theodor Stefan0-0 +
298Usurelu Daniel Constantin-00 +
299Vele Radu George0-0 +
300Victor Pescaru0-0 +
301Teodorescu Vlad0-0 +
302Vlad Crismaru0-0 +
303Curiman Andrei0-0 +
304Alexandru Mocanu0-0 +
305Alexandru Dobre000 +
306Alex Toma0-0 +
307alexh-00 +
308Rus Alisa0-0 +
309Pintilie Anastasia0-0 +
310Andreea Dutulescu0-0 +
311Andrei Ionescu0-0 +
312Andrei-Florin Dogaru0-0 +
313Andrei Covaciu0-0 +
3140-0 +
315Stefanescu Andru0-0 +
316Andrei Antohie0-0 +
317Beniamin Savu0-0 +
318Bia Beniamin0-0 +
319Adrian Manea-00 +
320Zaharachescu Bogdan000 +
321Bogdan Ciurezu0-0 +
322Luncasu Bogdan Cristian0-0 +
323Bolos Robert0-0 +
324Geman Dorin Andrei0-0 +
325Câmpean Bogdan Mihai0-0 +
326Cioban Cristian Andrei0-0 +
327Paraschiv A.-00 +
328Petrehus A.0-0 +
329Condrea Florin0-0 +
330Petrica Stefan Cosmin0-0 +
331cristina borza0-0 +
332Pupeza Pavel Cristian0-0 +
333Szilagyi Csongor0-0 +
334Custura Natanael0-0 +
335Dana Pasca0-0 +
336Damian Dan-Stefan0-0 +
337Daria Marc0-0 +
338Bugnar Dan0-0 +
339Delia Drg0-0 +
340Homner Dragos-00 +
341Dragos-00 +
342Radu Seteanu0-0 +
343Toader Alexandru-Romica-00 +
344Moise Gabriel0-0 +
345Deac Andrei-00 +
346Râpeanu George-Alexandru-00 +
347Muntean Horia Ioan0-0 +
348Iliesi Daniel0-0 +
349Mihai Alexandru Ionut-00 +
350Iulian Popescu-00 +
351Chili Ivona-Alexandra0-0 +
352Iulia Sargu0-0 +
353Laszlo Gabor0-0 +
354Costolas Darius Flavius0-0 +
355Cata Mihai0-0 +
356Vasiluță Andrei Ionuț000 +
357Ardelean Ovidiu0-0 +
358doyouhaveanycookiez0-0 +
359Raul Muresan0-0 +
360Albu Cristian0-0 +
361Muresan Razvan0-0 +
362cuciula rebeca-crina000 +
363Ruxandra Icleanu-00 +
364Gîlcă Marian Sebastian 000 +
365seot0-0 +
366Sima Sergiu Sebastian0-0 +
367Andrei Katona000 +
368Botez Stefan0-0 +
369Silvan-Adrian Talos000 +
370Gyorfi Tamas0-0 +
371Prodan Tudor0-0 +
372Tudor Lozba0-0 +
373Cristian Vlad-Alexandru000 +
374Litan Virgil0-0 +
375Vlad Florin Ciorba0-0 +
376Vlad Bucur0-0 +
377Persa Vlad-Daniel0-0 +
378Badoiu Vlad0-0 +
379Popovici Andrei Sorin0-0 +
+ +This table was generated with the following script: + +
    1 #!/usr/bin/perl
+    2 use v5.14;
+    3 use warnings;
+    4 
+    5 use Encode qw/encode/;
+    6 use HTTP::Tiny;
+    7 use JSON::PP qw/decode_json/;
+    8 
+    9 my %scores;
+   10 my %user_to_name;
+   11 
+   12 my @contests = qw/mc2015r1 mc2015r2/;
+   13 my $ht = HTTP::Tiny->new;
+   14 
+   15 for my $ct (@contests) {
+   16     my $st = decode_json $ht->get("https://mindcoding.ro/st/$ct?format=json")->{content};
+   17     my @st = @{$st->{st}};
+   18     for (@st) {
+   19         $scores{$_->{user}}{$ct} = $_->{score};
+   20         $scores{$_->{user}}{total} += $_->{score};
+   21         $user_to_name{$_->{user}} = $_->{user_name} // $_->{user};
+   22     }
+   23 }
+   24 
+   25 print <<'';
+   26 <table class="table table-bordered table-striped">
+   27 <thead>
+   28 <tr><th>No.<th>User<th>Round 1<th>Round 2<th>Total
+   29 <tbody>
+   30 
+   31 my $nr = 1;
+   32 for my $user (sort {$scores{$b}{total} <=> $scores{$a}{total} or $a cmp $b} keys %scores) {
+   33     my $cts = join '<td>', map { $scores{$user}{$_} // '-' } @contests;
+   34     say encode 'UTF-8', qq,<tr><td>$nr<td><a href="/us/$user">$user_to_name{$user}</a><td>$cts<td>$scores{$user}{total},;
+   35     $nr++;
+   36 }
+   37 
+   38 say '</table>';
+
+ diff --git a/a/mc2015st.en.title b/a/mc2015st.en.title new file mode 100644 index 0000000..821c784 --- /dev/null +++ b/a/mc2015st.en.title @@ -0,0 +1 @@ +Combined standings diff --git a/a/rules.en b/a/rules.en new file mode 100644 index 0000000..332c964 --- /dev/null +++ b/a/rules.en @@ -0,0 +1,13 @@ +

MindCoding - Rules

+ + diff --git a/a/rules.en.title b/a/rules.en.title new file mode 100644 index 0000000..c191cb5 --- /dev/null +++ b/a/rules.en.title @@ -0,0 +1 @@ +Rules \ No newline at end of file diff --git a/a/st.en b/a/st.en new file mode 100644 index 0000000..489b1dc --- /dev/null +++ b/a/st.en @@ -0,0 +1,119 @@ + + +
NrUserRound 2Round 3Round 4Total +
1Rares Buhai55514367712762 +
2Mihai Popa110012232702593 +
3Oncescu Costin Andrei4178145141745 +
4Mugurel Ionut Andreica3961262-1658 +
5Alex Velea674096861162 +
6Cosmin Rusu301718971098 +
7Vlad Duta139456266861 +
8Mărcuș Romulus George558302-860 +
9Necula Onisim--845845 +
10Patcas Csaba232208395835 +
11Mihai Nitu163493158814 +
12Catalin Stefan Tiseanu-595193788 +
13Adrian Craciun78447196721 +
14Mihai Gheorghe9698440634 +
15Alex Cociorva156199208563 +
16Mircea Popoveniuc9275381548 +
17Stefan Negrus111173229513 +
18Ionescu Teodor82169206457 +
19Dan Alexandru--415415 +
20Plop Teodor--414414 +
21Lup Vasile-207184391 +
22Onesim Robert Ioan7484202360 +
23Emanuel Truta8194144319 +
24Cristian Buleandra0212106318 +
25Petcu Ioan Vlad21577-292 +
26stefan x3292168292 +
27Andrei Stanciu--262262 +
28Nathan Wildenberg68-191259 +
29Bucevschi Alexandru-96158254 +
30Gogonea Andrei095156251 +
31Puscasu Felix3091128249 +
32Lolus-243-243 +
33Paun Matei-96140236 +
34Ciorabai Gedit3078124232 +
35Alexandru Valeanu-212-212 +
36Andrei Stan300182212 +
37jackal02429368203 +
38Irimia Rares085110195 +
39Nistor Sergiu Cosmin09579174 +
40Stefanescu Vlad7479-153 +
41Cîmpeanu Vlăduț Alexandru--152152 +
42Banu Cristian-0144144 +
43Albu Cristian49093142 +
44Mihai Enache--139139 +
45Adina Mateescu 09132123 +
46Gergely Tudor30087117 +
47Crisan Dragos30840114 +
48Radu Seteanu-3575110 +
49Bazac Tudor105--105 +
50Costin Bianca096-96 +
51Alexandru Cosmin Mihai-95-95 +
52Cosmin Andrei Carabet-95-95 +
53Suciu Victor-94-94 +
54Gabriel Badea-93093 +
55Pocola Tudor Octavian-90-90 +
56Dit Dragos-Daniel083-83 +
57Berbecariu Flaviu0-7676 +
58Palffy Sandor75--75 +
59Paul Diac72--72 +
60Vlad Badelita-72-72 +
61Calin Nicolau-71-71 +
62Luncasu Victor67--67 +
63Radu Muntean67--67 +
64Tran Bach Nguyen67--67 +
65Teudan Adina0-6464 +
66Vlad Negru64--64 +
67Rusu Iulian - Daniel610061 +
68Paslaru Tudor3030060 +
69Dragoș Alin Rotaru57--57 +
70Maria Pandele55--55 +
71Alghisi Alessandro53--53 +
72Marin Tiberiu52-052 +
73Eftime Andrei Horatiu45--45 +
74Hreapca Aurelian30--30 +
75Tilica Robert30--30 +
76clau-30-30 +
77Dragan Andrei Gabriel30--30 +
78Kis Levente Lorand30--30 +
79Mititelu Cristian30--30 +
80Nechita Sebastian30--30 +
81Florea Toma Eduard30--30 +
82AAA22AAA00-0 +
83Moldovan Catalin0--0 +
84Sbera Catalin0--0 +
85Checiu Eliza Alexandra0--0 +
86Ciprian Marin--00 +
87Luca Vlasceanu0--0 +
88Celea Matei0--0 +
89MesesanPaul00-0 +
90Zsisku Mihai0--0 +
91Octavian Duiu-0-0 +
92Omer Cerrahoglu--00 +
93Cotrut Petru0--0 +
94Romaniuc Radu Andrei0--0 +
95Sanziana Tudose0--0 +
96Sergiu P.0--0 +
97Deniz Ozguluk0--0 +
98Luca Ignatescu0--0 +
99Munteanu Virgil Petru0--0 +
100Weng Mihai Alexandru0--0 +
101Zaharia Horia0--0 +
102Bia Beniamin00-0 +
103Mircea Dima0--0 +
104Checiu Denisa Georgiana0--0 +
105Muntean Cătălin0--0 +
106Gergely David0--0 +
107Iulia Hascsi-0-0 +
108liviu0--0 +
109ciprian marin-0-0 +
110Zlatea_Cezar0--0 +
111Necula Onisim-0-0 +
112Mercea Otniel Bogdan0--0 +
113Ungurasu Razvan0--0 +
114Tudose Vlad0--0 + +
\ No newline at end of file diff --git a/a/st.en.title b/a/st.en.title new file mode 100644 index 0000000..2f91bae --- /dev/null +++ b/a/st.en.title @@ -0,0 +1 @@ +MindCoding Standings \ No newline at end of file diff --git a/a/team.en b/a/team.en new file mode 100644 index 0000000..154ac16 --- /dev/null +++ b/a/team.en @@ -0,0 +1,21 @@ +
+
+

Petru Tiberiu
Trimbitas

+Project manager +
+ +
+

Marius
Gavrilescu

+Lead Programmer +
+ +
+

Smaranda
Ciubotaru

+Marketing & PR Manager
Problemsetter
+
+ +
+

Andrei
Constantinescu

+Problemsetter +
+
diff --git a/a/team.en.title b/a/team.en.title new file mode 100644 index 0000000..852ac9d --- /dev/null +++ b/a/team.en.title @@ -0,0 +1 @@ +The Team diff --git a/a/testing.en b/a/testing.en new file mode 100644 index 0000000..65ffd83 --- /dev/null +++ b/a/testing.en @@ -0,0 +1,98 @@ +

+Testing is an important step of writing programs of any kind. In algorithm contests, bugs cost time and points, so they must be avoided. There are two strategies you can use in order to avoid bugs: detecting them in an already-written program and writing programs without them. + +

+The most common method to finding bugs in a program is by testing it. The most common way of testing during an algorithm contest is by writing two other separate programs: one that solves the problem in a very simple way (generally a brute-force solution), and one that generates a random test. Then you can repeatedly generate a test, run the two programs on the test, and compare the outputs. If they are different, there is a bug in one of the programs. + +

+Since you don't have to submit these two extra programs, you have a wider choice of tools than those that are allowed for the final solutions. For example in the ACM-ICPC you may only use C, C++, Java, and in the IOI C, C++, Pascal, but all Linux computers have Perl and Python interpreters. + +

+We'll use MaxSquare as an example problem. A possible generator is: + +

+    1 #!/usr/bin/perl -w
+    2 use v5.14;
+    3 
+    4 my $n = 1 + int rand 50;
+    5 say $n;
+    6 for my $i (1 .. $n) {
+    7     for my $j (1 .. $n) {
+    8         print 100 - int rand 200, ' ';
+    9     }
+   10     say '';
+   11 }
+
+ +We'll now need a script to run the tests. Assume that the two programs are written in C++ and named 'prog1.cpp' and 'prog2.cpp', and that the generator is named 'gen'. +' +
+    1 #!/usr/bin/perl -w
+    2 use v5.14;
+    3 
+    4 system 'make prog1 prog2';
+    5 for (1 .. 1000) {
+    6     system './gen > input';
+    7     system './prog1 < input > output1';
+    8     system './prog2 < input > output2';
+    9     die "The outputs are different!\n" if system 'diff -q output1 output2';
+   10 }
+
+ +

+If the two programs produce different outputs for a test, the script dies with an error, allowing the user to inspect the input and outputs, find the bug, and fix it. + +


+

+You can also do this in other languages, such as C++. For example: + +

+Generator: + +

+    1 #include <iostream>
+    2 #include <cstdlib>
+    3 #include <ctime>
+    4 using namespace std;
+    5 
+    6 int rnd(int a, int b) {
+    7     return a + rand() % (b - a);
+    8 }
+    9 
+   10 int main() {
+   11     srand(time(NULL));
+   12     int n = rnd(1, 100);
+   13     cout << n << '\n';
+   14     for(int i=0; i<n; ++i) {
+   15         for(int j=0; j<n; ++j)
+   16             cout << rnd(-100, 100) << ' ';
+   17         cout << '\n';
+   18     }
+   19     return 0;
+   20 }
+
+ +Test runner: + +
+    1 #include <iostream>
+    2 #include <cstdlib>
+    3 #define TESTS 1000
+    4 using namespace std;
+    5 
+    6 int main() {
+    7     system("g++ -o gen gen.cpp");//compile the files, the executable file will be named gen
+    8     system("g++ -o brute brute.cpp");
+    9     system("g++ -o ok ok.cpp");
+   10     for(int i=0; i<TESTS; ++i) {
+   11         system("./gen > input");//redirects the stdout of the program gen to the file named input
+   12         system("./brute < input > bout");//redirects the file input to stdin and stdout to bout
+   13         system("./ok <input > oout");
+   14         if(system("diff -q bout oout")) {
+   15             cout<<"Outputs differ";
+   16             return 0;
+   17         }
+   18     }
+   19     return 0;
+   20 }
+
\ No newline at end of file diff --git a/a/testing.en.title b/a/testing.en.title new file mode 100644 index 0000000..73709ba --- /dev/null +++ b/a/testing.en.title @@ -0,0 +1 @@ +Testing diff --git a/app.psgi b/app.psgi index 5372109..be72e9b 100644 --- a/app.psgi +++ b/app.psgi @@ -9,7 +9,7 @@ use Plack::Util; use Log::Log4perl; use constant AUTH_TIMEOUT => 5 * 60; -use constant ACCESSLOG_FORMAT => 'combined'; +use constant ACCESSLOG_FORMAT => '%{X-Forwarded-For}i %l %u %t "%r" %>s %b "%{Referer}i" "%{User-agent}i"'; sub CONTENT_SECURITY_POLICY () { my $csp = <fid('logo')->replace_with(literal scalar read_file "mclogo.svg"); $tree->content_handler( title => $args{title}, content => literal $args{meat}); @@ -114,6 +115,7 @@ sub process_us { sub process_ct_entry { my ($tree, %args) = @_; $_->edit_href (sub {s/contest_id/$args{id}/}) for $tree->find('a'); + $tree->fid('editorial')->detach unless $args{finished}; $tree->fid('links')->detach unless $args{started}; my $status = ($args{time} < $args{start} ? 'starts' : 'ends'); $tree->fclass('timer')->attr('data-stop', $status eq 'ends' ? $args{stop} : $args{start}); diff --git a/log.conf b/log.conf index bc559ff..a0f2bda 100644 --- a/log.conf +++ b/log.conf @@ -1,10 +1,11 @@ -log4perl.category. = TRACE, +log4perl.category. = TRACE, stderr log4perl.category.access = INFO, accesslog log4perl.appender.stderr = Log::Log4perl::Appender::Screen log4perl.appender.stderr.layout = Log::Log4perl::Layout::PatternLayout log4perl.appender.stderr.layout.ConversionPattern = [%d] [%F{1}:%M{1}:%L] [%p] %m%n -log4perl.appender.accesslog = Log::Log4perl::Appender::Screen +log4perl.appender.accesslog = Log::Log4perl::Appender::File +log4perl.appender.accesslog.filename = /var/log/accesslog log4perl.appender.accesslog.layout = Log::Log4perl::Layout::PatternLayout log4perl.appender.accesslog.layout.ConversionPattern = %m%n diff --git a/logos/bigstep.png b/logos/bigstep.png new file mode 100644 index 0000000..3ee4d6b Binary files /dev/null and b/logos/bigstep.png differ diff --git a/logos/bosch.jpg b/logos/bosch.jpg new file mode 100644 index 0000000..ecd2fbe Binary files /dev/null and b/logos/bosch.jpg differ diff --git a/logos/cos.png b/logos/cos.png new file mode 100644 index 0000000..371fb2c Binary files /dev/null and b/logos/cos.png differ diff --git a/logos/csf.png b/logos/csf.png new file mode 100644 index 0000000..2193176 Binary files /dev/null and b/logos/csf.png differ diff --git a/logos/easyhost.png b/logos/easyhost.png new file mode 100644 index 0000000..3a25808 Binary files /dev/null and b/logos/easyhost.png differ diff --git a/logos/emag.png b/logos/emag.png new file mode 100644 index 0000000..1fbbe48 Binary files /dev/null and b/logos/emag.png differ diff --git a/logos/endava.jpg b/logos/endava.jpg new file mode 100644 index 0000000..9e49b07 Binary files /dev/null and b/logos/endava.jpg differ diff --git a/logos/eyc.png b/logos/eyc.png new file mode 100644 index 0000000..a203b2f Binary files /dev/null and b/logos/eyc.png differ diff --git a/logos/facebook.png b/logos/facebook.png new file mode 100644 index 0000000..cd2d5f7 Binary files /dev/null and b/logos/facebook.png differ diff --git a/logos/hermes-light.png b/logos/hermes-light.png new file mode 100644 index 0000000..2e2e417 Binary files /dev/null and b/logos/hermes-light.png differ diff --git a/logos/hermes.png b/logos/hermes.png new file mode 100644 index 0000000..fc8e791 Binary files /dev/null and b/logos/hermes.png differ diff --git a/logos/spyhce.png b/logos/spyhce.png new file mode 100644 index 0000000..fdaa0d3 Binary files /dev/null and b/logos/spyhce.png differ diff --git a/logos/takeofflabs-light.png b/logos/takeofflabs-light.png new file mode 100644 index 0000000..ce72061 Binary files /dev/null and b/logos/takeofflabs-light.png differ diff --git a/logos/takeofflabs.png b/logos/takeofflabs.png new file mode 100644 index 0000000..e0efc97 Binary files /dev/null and b/logos/takeofflabs.png differ diff --git a/logos/telenav.png b/logos/telenav.png new file mode 100644 index 0000000..26fc522 Binary files /dev/null and b/logos/telenav.png differ diff --git a/logos/usr.png b/logos/usr.png new file mode 100644 index 0000000..05ae579 Binary files /dev/null and b/logos/usr.png differ diff --git a/logos/yardi-light.png b/logos/yardi-light.png new file mode 100644 index 0000000..d99f4dd Binary files /dev/null and b/logos/yardi-light.png differ diff --git a/logos/yardi.png b/logos/yardi.png new file mode 100644 index 0000000..cde5d87 Binary files /dev/null and b/logos/yardi.png differ diff --git a/make_static.PL b/make_static.PL index fe06da9..01c6125 100644 --- a/make_static.PL +++ b/make_static.PL @@ -3,6 +3,7 @@ use v5.14; use warnings; use CSS::Minifier::XS qw//; +use CSS::SpriteMaker; use JavaScript::Minifier::XS qw//; use File::Slurp qw/read_file write_file/; @@ -10,6 +11,25 @@ use File::Slurp qw/read_file write_file/; mkdir 'static'; mkdir 'static/css'; +my $maker = Local::CSS::SpriteMaker->new( + css_class_prefix => 'logo-', + rc_override_classname => sub { + my ($name) = @_; + $name =~ s/-light/.logo-light/r; + } +); + +$maker->make_sprite( + source_images => ['logos/'], + target_file => 'static/logos.png', + add_extra_padding => 10, +); + +$maker->print_css( + filename => 'css/logos.css', + sprite_filename => 'https://static.mindcoding.ro/static/logos.png', +); + my $common_css; $common_css .= read_file $_ for ; for () { @@ -29,3 +49,24 @@ if (-f 'compiler.jar') { $js .= read_file $_ for ; write_file 'static/js.js', JavaScript::Minifier::XS::minify $js; } + +package + Local::CSS::SpriteMaker; + +use parent qw/CSS::SpriteMaker/; + +sub _get_stylesheet_string { + my $self = shift; + my @ret = split "\n", $self->SUPER::_get_stylesheet_string(@_); + shift @ret; + @ret = sort @ret; + unshift @ret, <