Google Hash Code 2021 – Practice Problem 1

Even more pizza

Hash Code 2021, Practice Round - Problem (1788 downloads)

Hash Code 2021, Online Qualification Round – Problem (239 downloads)


Isn’t it fun to share pizza with friends? But, sometimes you just don’t have enough time to choose what pizza to order. Wouldn’t it be nice if someone else chose for you?

In an imaginary world…

Problem description


Help the imaginary pizzeria choose the pizzas to deliver to Hash Code teams. And since we want everyone to enjoy their food, let’s try to deliver to each team, as many different ingredients as we can.


Expecting many hungry customers, the pizzeria has already prepared some pizzas with different ingredients. Each pizza can be delivered to at most one team. There can be multiple pizzas with the exact same set of ingredients.

For example , there are 5 pizzas available in the pizzeria:

Pizza 0: onion, pepper, olive
Pizza 1: mushroom, tomato, basil
Pizza 2: chicken, mushroom, pepper
Pizza 3: tomato, mushroom, basil
Pizza 4: chicken, basil

Note that Pizzas 1 and 3 have the same ingredients, even though they are mentioned in different order.


Teams of 2, 3, or 4 people all ordered pizzas. Each team ordered one pizza per team member, but did not specify what ingredients to put on the pizzas. The pizzeria might not deliver to a team (no pizzas are sent to that team). However, if the order is delivered, exactly one pizza should be available per person. For example, it is an error to send 3 pizzas to a 4-person team.


Given the description of the pizzas available, and the number of teams of 2, 3, or 4 people that have ordered, decide which pizzas to send to each of the teams. The goal is to maximize, per team, the number of different ingredients used in all their pizzas.

For example , if we deliver to a 3-person team Pizzas 0, 2 and 3, there will be 7 different ingredients (9 ingredients in total, but pepper and mushroom occur twice):

  • Pizza 0
    • onion
    • pepper
    • olive
  • Pizza 2:
    • chicken
    • mushroom
    • pepper (is already on Pizza 0)
  • Pizza 3:
    • tomato
    • mushroom (is already on Pizza 2)
    • basil

Input data set

The input data is provided as a data set file – a plain text file containing exclusively ASCII characters with lines terminated with a single ‘\n’ character (UNIX- style line endings).

File format

The first line of the input file contains the following integer numbers separated by single spaces:

  • M ( 1 ≤ M ≤ 100,000 ) – the number of pizzas available in the pizzeria
  • T2 ( 0 ≤ T2 ≤ 50,000 ) – the number of 2-person teams
  • T3 ( 0 ≤ T3 ≤ 50,000 ) – the number of 3-person teams
  • T4 ( 0 ≤ T4 ≤ 50,000 ) – the number of 4-person teams

The next M lines describe the pizzas available. Each line contains (space separated):

  • an integer I ( 1 ≤ I ≤ 10,000 ) – the number of ingredients,
  • followed by the list of I ingredients – Each ingredient consists of lowercase ASCII letters and dash (-) characters, and its length can be between 1 and 20 characters in total. Each ingredient in a pizza is different, but the same ingredient can appear on different pizzas.


Input file
5 1 2 1
3 onion pepper olive
3 mushroom tomato basil
3 chicken mushroom pepper
3 tomato mushroom basil
2 chicken basil
5 pizzas, 1 team of two, 2 teams of three, and 1 team of four
Pizza 0 has the given 3 ingredients
Pizza 1 has the given 3 ingredients
Pizza 2 has the given 3 ingredients
Pizza 3 has the given 3 ingredients
Pizza 2 has the given 2 ingredients


File format

The first line of the submission file contains a number D ( 1 ≤ D ≤ T2 + T3 + T4 ), representing the number of pizza deliveries.

The following D lines contain descriptions of each delivery. Each line contains the following integer numbers separated by single spaces:

  • L ( 2 ≤ L ≤ 4 ) – the number of people in the team
  • followed by the list of pizzas, P1 … PL – the space separated indexes of the pizzas delivered to that team

Even though it’s nice to deliver pizzas to all teams, it is allowed to make fewer deliveries than the number of teams. However, making more deliveries than the number of teams is an error. It is also an error to make more deliveries to 2, 3 or 4-person teams than the corresponding number
of teams provided in the input file: the number of lines with L=N, should not be greater than TN.


Submission file
2 1 4
3 0 2 3
Pizzas are delivered to 2 teams
A 2-person team will receive Pizza 1 and Pizza 4
A 3-person team will receive Pizza 0, Pizza 2 and Pizza 3


In order for the submission to be accepted:

  • each pizza must be part of at most one order,
  • for all N-person teams, either nobody or everybody receives a pizza,
  • there are TN or less deliveries to teams of N people.


For each delivery, the delivery score is the square of the total number of different ingredients of all the pizzas in the delivery. The total score is the sum of the scores for all deliveries.

For example , with the example input file and the example submission file above, there are

  • 4 ingredients delivered to the two-person team (mushroom, tomato, basil, chicken). The score for that team is 42 = 16
  • 7 ingredients delivered to the tree-person team. The score for that team is 72 = 49.
  • (The score is 0 for the two teams that didn’t have their order delivered)

The total score is 16 + 49 = 65 .

Note that there are multiple data sets representing separate instances of the problem. The final score for your team will be the sum of your best scores for the individual data sets.

Past editions

— From

Hash Code started in 2014 with just 200 participants from France. In 2020, more than 100,000 participants from across Europe, the Middle East and Africa took part in the competition. You can take a look at the problems and winning teams from past editions of Hash Code below.

Past problem statements

Traffic Signaling

Hash Code 2021, Online Qualification Round
Hash Code 2021, Online Qualification Round – Problem (239 downloads)
Given the description of a city plan and planned paths for all cars in that city, optimize the schedule of traffic lights to minimize the total amount of time spent in traffic, and help as many cars as possible reach their destination before a given deadline.

Assembling smartphones

Hash Code 2020, Final Round
Hash Code 2020, Final Round - Problem (547 downloads)
In this problem statement, we will explore the idea of operating an automated assembly line for smart phones.
Building a smart phone is a complex process that involves assembling numerous components, including the screen, multiple cameras, microphones, speakers, a processing unit, and a storage unit.
In order to automate the building of a smart phone, we will be using robotic arms that can move around the assembly workspace performing all necessary tasks.

Book scanning

Hash Code 2020, Online Qualification Round
Hash Code 2020, Online Qualification Round - Problem (537 downloads)
Books allow us to discover fantasy worlds and better understand the world we live in. They enable us to learn about everything from photography to compilers… and of course a good book is a great way to relax!
Google Books is a project that embraces the value books bring to our daily lives. It aspires to bring the world’s books online and make them accessible to everyone. In the last 15 years, Google Books has collected digital copies of 40 million books in more than 400 languages , partly by scanning books from libraries and publishers all around the world.
In this competition problem, we will explore the challenges of setting up a scanning process for millions of books stored in libraries around the world and having them scanned at a scanning facility.

Compiling Google

Hash Code 2019, Final Round
Hash Code 2019, Final Round - Problem (449 downloads)
Google has a large codebase, containing billions of lines of code across millions of source files. From these source files, many more compiled files are produced, and some compiled files are then used to produce further compiled files, and so on.
Given then huge number of files, compiling them on a single server would take a long time. To speed it up, Google distributes the compilation steps across multiple servers.
In this problem, we will explore how to effectively use multiple compilation servers to optimize compilation time.

Photo slideshow

Hash Code 2019, Online Qualification Round
Hash Code 2019, Online Qualification Round - Problem (413 downloads)
As the saying goes, “a picture is worth a thousand words.” We agree – photos are an important part of contemporary digital and cultural life. Approximately 2.5 billion people around the world carry a camera – in the form of a smart phone – in their pocket every day. We tend to make good use of it, too, taking more photos than ever (back in 2017, Google Photos announced it was backing up more than 1.2 billion photos and videos per day).
The rise of digital photography creates an interesting challenge: what should we do with all of these photos? In this competition problem, we will explore the idea of composing a slideshow out of a photo collection.

City Plan

Hash Code 2018, Final Round
Hash Code 2018, Final Round - Problem (446 downloads)
The population of the world is growing and becoming increasingly concentrated in cities. According to the World Bank, global urbanization (the percentage of the world’s population that lives in cities) crossed 50% in 2008 and reached 54% in 2016.
The growth of urban areas creates interesting architectural challenges. How can city planners make efficient use of urban space? How should residential needs be balanced with access to public utilities, such as schools and parks?

Self-driving rides

Hash Code 2018, Online Qualification Round
Hash Code 2018, Online Qualification Round - Problem (414 downloads)
Millions of people commute by car every day; for example, to school or to their workplace.
Self-driving vehicles are an exciting development for transportation. They aim to make traveling by car safer and more available while also saving commuters time.
In this competition problem, we’ll be looking at how a fleet of self-driving vehicles can efficiently get commuters to their destinations in a simulated city.

Router placement

Hash Code 2017, Final Round
Hash Code 2017, Final Round - Problem (1382 downloads)
Who doesn’t love wireless Internet? Millions of people rely on it for productivity and fun in countless cafes, railway stations and public areas of all sorts. For many institutions, ensuring wireless Internet access is now almost as important a feature of building facilities as the access to water and electricity. Typically, buildings are connected to the Internet using a fiber backbone. In order to provide wireless Internet access, wireless routers are placed around the building and connected using fiber cables to the backbone. The larger and more complex the building, the harder it is to pick router locations and decide how to lay down the connecting cables.

Streaming videos

Hash Code 2017, Online Qualification Round
Hash Code 2017, Online Qualification Round - Problem (1363 downloads)
Have you ever wondered what happens behind the scenes when you watch a YouTube video? As more and more people watch online videos (and as the size of these videos increases), it is critical that video-serving infrastructure is optimized to handle requests reliably and quickly. This typically involves putting in place cache servers, which store copies of popular videos. When a user request for a particular video arrives, it can be handled by a cache server close to the user, rather than by a remote data center thousands of kilometers away. Given a description of cache servers, network endpoints and videos, along with predicted requests for individual videos, decide which videos to put in which cache server in order to minimize the average waiting time for all requests.

Schedule Satellite Operations

Hash Code 2016, Final Round
Hash Code 2016, Final Round - Problem (1032 downloads) A satellite equipped with a high-resolution camera can be an excellent source of geo imagery. While harder to deploy than a plane or a Street View car, a satellite — once launched — provides a continuous stream of fresh data. Terra Bella is a division within Google that deploys and manages high-resolution imaging satellites in order to capture rapidly-updated imagery and analyze them for commercial customers. With a growing constellation of satellites and a constant need for fresh imagery, distributing the work between the satellites is a major challenge. Given a set of imaging satellites and a list of image collections ordered by customers, schedule satellite operations so that the total value of delivered image collections is as high as possible.

Optimize Drone Deliveries

Hash Code 2016, Online Qualification Round
Hash Code 2016, Online Qualification Round - Problem (1143 downloads)
The Internet has profoundly changed the way we buy things, but the online shopping of today is likely not the end of that change; after each purchase we still need to wait multiple days for physical goods to be carried to our doorstep. Given a fleet of drones, a list of customer orders and availability of the individual products in warehouses, schedule the drone operations so that the orders are completed as soon as possible.

Route Loon Balloons

Hash Code 2015, Final Round
Hash Code 2015, Final Round - Problem (865 downloads)
Project Loon aims to bring universal Internet access using a fleet of high altitude balloons equipped with LTE transmitters. Circulating around the world, Loon balloons deliver Internet access in areas that lack conventional means of Internet connectivity. Given the wind data at different altitudes, plan altitude adjustments for a fleet of balloons to provide Internet coverage to select locations.

Optimize a Data Center

Hash Code 2015, Online Qualification Round
Hash Code 2015, Online Qualification Round - Problem (1166 downloads)
For over ten years, Google has been building data centers of its own design, deploying thousands of machines in locations around the globe. In each of these of locations, batteries of servers are at work around the clock, running services we use every day, from Google Search and YouTube to the Judge System of Hash Code. Given a schema of a data center and a list of available servers, your task is to optimize the layout of the data center to maximize its availability.

Street View Routing

Hash Code 2014, Final Round
Hash Code 2014, Final Round - Problem (1046 downloads)
The Street View imagery available in Google Maps is captured using specialized vehicles called Street View cars. These cars carry multiple cameras capturing pictures as the car moves around a city. Capturing the imagery of a city poses an optimization problem: the fleet of cars is available for a limited amount of time and we want to cover as much of the city streets as possible.

IEEEXtreme 11.0 Programming Competition

IEEEXtreme is a global challenge in which teams of IEEE Student members – advised and proctored by an IEEE member, and often supported by an IEEE Student Branch – compete in a 24-hour time span against each other to solve a set of programming problems.

IEEEXtreme 11.0 will take place on
14 October 2017 00:00:00 UTC.

Teams can be composed of up to three collegiate students who are current IEEE student members.


  1. Fame: Unlimited bragging rights and an item for your resume.
  2. Fortune: The Grand Prize is a trip to the IEEE conference of your choice, anywhere in the world.

Pancyprian Student Programming OlympiadΠαγκύπρια Μαθητική Ολυμπιάδα Πληροφορικής

The PSPO was established by the Cyprus Computer Society (CCS) in 1991 in response to the invitation to participate in the third International Olympiad in Informatics that took place in 1991 in Athens, Greece. Since then, The Society has been organizing the Cypriot competition every year.

In the early days, it was difficult to attract students to participate because there were no computers in schools and Computing was not taught in the schools.

Nowadays, the PSPO runs in two rounds and attracts about 200 top students with skills and interest in computer programming every year.

Due to the involvement of the Society in the international competitions, Cyprus has organized in 1996 the 4th Balkan Olympiad in Informatics, during the period 20-25 October and in 2006 the 14th Balkan Olympiad in Informatics, during the period 1-7 July 2006.



To promote the use of Computing and Information Technology among high school students of the public and private schools of Cyprus.

To give an opportunity to young talented students to prove their skills and knowledge in computer programming.

To bring young students having the same interests together and give them the opportunity to network, exchange ideas and cooperate.

To select the Official Team of Cyprus that represents our country in International Programming Competitions; the Balkan Olympiad in Informatics and the International Olympiad in Informatics.



Eligible to participate are all students of public and private secondary education schools, both Greek and English speaking. Eligible to participate are also young high school graduates who, at the time of the competition, serve the Cyprus army. The competitors who will be selected to represent Cyprus in the International Competitions have to also conform to additional rules set by the authorities and the committeess of these competitions. These rules relate to the age of the competitors at the time of the International Competitions and to their status (i.e not to be university students).

The programming languages used during the competition are: PASCAL, C, C++. The Borland versions of these compilers will be installed on the competitors PCs. Competitors may use any version of these languages provided that they bring with them the required compiler and install them prior to the beginning of the competition.

Language of the Competition: The description of the programming tasks will be given to candidates in both the Greek and English languages. Competition PhasesThere are two mandatory phases to the competition. The organizing committee reserves the right to organize a third phase in order to declare the winners.

In the first phase, all students registered to participate are invited to take a written test. Their task is to solve basic-to-intermediate computer problems on paper. In this phase, the objective is to diagnose the basic knowledge of the participants in any of the three programming languages (see below for details) without giving concern to the syntax of the programming languages.

In the second phase, about 30% of the successful students of the first phase are invited to solve basic-to-intermediate computer problems using a PC and a programming language. The intention here is to identify the depth and breadth of knowledge of the participants as regards the programming languages and their way of algorithmic thinking and problem solving capabilities.

If required, a third and final phase will be organized in which, about 5% – 10% of the successful students of the second phase, are invited to solve intermediate-to-advanced computer problems using a PC and a programming language.

Winners: There are 4 winners to this competition and ranking is done based on the achievements and results of the candidates. The four winners will make up the official team of Cyprus who will participate in the Balkan and International Olympiads in Informatics.


Evaluation Criteria

The solutions provided by competitors will be evaluated by Members of the Cyprus Computer Society and the Scientific and Technical Chamber (ETEK) of Cyprus based on the following criteria:

Correctness of solution

Completeness of solution

Efficiency and effectiveness of the solution

Innovation of the solution

Overall program documentation

Usage of correct programming language syntax



Like every year, the first 4 winners will formally represent Cyprus in two International events, the Balkan Olympiad in Informatics (BOI) and the International Olympiad in Informatics .

The 2011 International Olympiad in Informatics will take place in Thailand (22-29 July 2011).

The place and date for the 2011 Balkan Olympiad will be announced soon.

All expenses (air tickets, hotel accommodation, meals, personal insurance) of the four students will be covered by the Cyprus Computer Society and the Ministry of Education and Culture.

All participants will receive a certificate of participation.

An awards ceremony will be organized at a date that will be announced later under the auspices of the Ministry of Education and Culture with the support of our sponsors, ECDL CYPRUS, Laiki e-Bank and Microsoft.Η Παγκύπρια Μαθητική Ολυμπιάδα Πληροφορικής είναι διαγωνισμός προγραμματισμού ηλεκτρονικών υπολογιστών για μαθητές της δευτεροβάθμιας εκπαίδευσης, δημόσιας και ιδιωτικής. Διοργανώνεται από τον Κυπριακό Σύνδεσμο Πληροφορικής σε δύο φάσεις σε ετήσια βάση.

Ο κύριος στόχος του είναι η αναβάθμιση της χρήσης της τεχνολογίας της πληροφορικής και της έννοιας του προγραμματισμού ανάμεσα στους μαθητές.

Η διοργάνωση αποβλέπει επίσης στην επιλογή της επίσημης κυπριακής αντιπροσωπείας της Κύπρου η οποία συμμετέχει στις διοργανώσεις της Διεθνούς και  Βαλκανικής Ολυμπιάδας Πληροφορικής.