Skip to: History | List of my problems
I have a strong
connection with all kinds of programming contests. I feel that they
can be a huge motivation factor for students, helping in the promotion
of computer science and the desire for always knowing more.
For a more complete list of the prizes I got in the contests I participated see my awards section. For a more textual description of my involvment in contests or for a list of my problems, continue in this page.
It all started when I was 15 years old and still in high
school, influenced by my brother. While still on 9th grade I
participated in the National
Olympiads in Informatics (ONI) and I was the youngest
contestant. I was
2nd in the national finals and obtained the right to
represent Portugal in
the International Olympiads in
Informatics (IOI) in the Netherlands. I also got the
opportunity to participate in a training campus organized by
Prof. Pedro
Guerreiro which proved to be very influential on good programming
techniques.
From there it all started to be part of my life. While I was still
at high school, I entered three more editions of ONI and got the 1st
place in all of the national finals. With that, I represented
Portugal in three more IOI's, held at Hungary, South Africa and
Portugal.
Nowadays I cannot participate but I'm still actively involved in the community. I'm leading the organization of the National Olympiads (together with my former student Pedro Paredes and APDSI). I organize the national finals and team selections at my department and I'm also active on the scientific side (as a problemsetter and coach) and I am currently the portuguese team leader at the IOI (from 2005 to 2008 I was the deputy leader and since 2009 I'm the team leader) and also at other international high-school competitions such as the Ibero-American Olympiads in Informatics (OII) and the Western-European Olympiad in Informatics (WEOI). In 2012 and 2013 I was also responsible for organizing OII.
When I entered the university, I
promoted programming competitions and basically helped in the first
experiences in my faculty on that field in
the ICPC International Collegiate
Programming Contest, which is a team contest (up to three
students), in opposition to the Olympiads, which are individual. In
this endeavour I was immensely helped
by Prof. Fernando Silva,
who believed in me and in competitive programming and helped in all aspects.
In 1999 I entered my first Southwestern Europe Regional Contest (SWERC) obtaining the 11th place among teams from 4 different countries.
In 2000 the University of Porto Programming Contest (CPUP) was started, with teams from several departments, and I won that first edition. In SWERC'2000 I was now 2nd (still the best rank of a portuguese team at SWERC), but failed the qualification for the world finals by a single place (only one team passed at that time - the next edition saw 2 teams advancing but also more countries participating: Switzerland, Austria and Germany.).
I then proceeded to won all editions of CPUP I participated in (2000 to 2003), gaining the right to represent my university at SWERC level, where I was always part of the best portuguese team. During those years I helped in founding the National ICPC Portuguese Contest (MIUP), with teams from all over the country. I won all the editions of that contest that I participated in, from 2001 to 2003.
While training, among several other sites, I dedicated some time to the UVA Online Judge (the most well known at that time), in which I solved more than 600 programming problems.
Nowadays I cannot participate as a contestant but I'm an active problemsetter and organizer. I am part of the scientific committee of MIUP, and I coach the university teams. In 2012 and 2015 I was the director of MIUP and I hosted it at DCC/FCUP. From 2014 to 2016 I was involved in the organization of SWERC at my department and I was also involved on the organization of the ICPC World Finals 2019 and the 2025 ICPC Europe Championship, both held at Porto.
I was part of the scientific committee of the IEEEXtreme Programming Contest in 2008 and 2009, authoring several problems.
All the afore mentioned contests use imperative programming (I
mainly use C/C++). In 2003 I decided to experiment another programming
paradigm in contests and I participated for the first time in the National Logic
Programming Contest (CENPL), working in Prolog. The contest
had an open division, in which post-graduate students could participate
and I got the global first place.
I repeated the experience in 2004 and 2005 (where the contest gained a functionl arm, with Haskell being permitted) and in both years I repeated the global first place.
I always wanted to promote computational
thinking and computer science for even younger ages and in 2019 I
started the portuguese edition of
the Bebras, an international
initiative aiming to promote Informatics (Computer Science, or
Computing) and computational thinking among school students at all
ages
I organize Bebras PT together
with TreeTree2 and we
challenge students from the 3rd to the 12th school years, reaching
almost all pre-university years. The portuguese edition has been
growing (~5K students in 2019, ~17K in 2020, ~43K in 2021, ~77K in
2022) an in 2023 we had over 105K students participating from around
700 schools from all over the country.
In 2002, during my final Bsc project, I decided to enter a
different competition, dedicated to artificial intelligence. I
participated in the Cyber-Mouse
virtual robot contest, in which a software agent has to be very
fast in solving a maze. I got the first place among teams from several
institutions. In 2003 I won again and continued to participate until
2006 (albeith spending less and less time developing the agent),
obtaining the 2nd place in 2005.
This is a list of some of my online available problems that were used on real programming competitions. I also contributed to many other contest problems (either on ideas, problem statement or solutions) and I have authored dozens of other problems used in several types of courses.
All these problems are in portuguese.