If you are preparing for USACO or any other competitive programming, Codeforces is a good place to practice your programming. This article contains my Python and C++ solutions for the Key Races problem 835A.
Key Races problem
Please read the Key Races problem on Codeforces. Make sure you understand the problem first. Do not code until you have written the algorithm on paper. For your algorithm, you can write either pseudocode or a diagrammatical flowchart.
Logic
You start with 5 variables, s, v1, v2, t1, t2
.
The time taken by the first participant would be time taken for all letters s * v1
plus roundtrip ping time, which would be t1 * 2
. The total would be s * v1 + t1 * 2
.
Similarly, for the second participant, the total time would be s * v2 + t2 * 2
.
Now, using these values, do an if-else
condition to return First
, Second
or Friendship
.
Test cases
You can download test cases:
- key_races_1.in answer:
First
- key_races_2.in answer:
Second
- key_races_3.in answer:
Friendship
Install Python or C++
If you do not have Python or C++, you should first install it. Codeforces uses Python 3.8 for evaluating your code. If you are using C++, they have versions 17 and 20.
My Python solution
This is my Python solution:
s, v1, v2, t1, t2 = map(int, input().split(' '))
first = s * v1 + t1 * 2
second = s * v2 + t2 * 2
if first < second:
print('First')
elif second < first:
print('Second')
else:
print('Friendship')
Running the Python code
Run the Python code from your Terminal. I am using macOS, but you can use any Linux-based OS as well.
$ cat key_races_1.in | python key_races.py
First
$ cat key_races_2.in | python key_races.py
Second
$ cat key_races_3.in | python key_races.py
Friendship
My C++ solution
This is my C++ solution:
#include <iostream>
using namespace std;
int main() {
int s, v1, v2, t1, t2;
cin >> s >> v1 >> v2 >> t1 >> t2;
// Compare and find the lowest value guy
int first, second;
first = s * v1 + t1 * 2;
second = s * v2 + t2 * 2;
if (first < second) {
cout << "First";
} else if (second < first) {
cout << "Second";
} else {
cout << "Friendship";
}
}
Running the C++ code
Compile the C++ code from your Terminal. This command creates a.out
.
$ g++ key_races.cpp
Now, run all the three test cases against a.out
.
$ cat key_races_1.in | ./a.out
First
$ cat key_races_2.in | ./a.out
Second
$ cat key_races_3.in | ./a.out
Friendship
Submit your code
Submit your Python code and C++ code to Codeforces. When your code successfully passes all test cases, you will get a green "Accepted" message with the time taken.
Which is faster?
In the Codeforces submission page, these were the results:
Python 3 -- Time taken: 46 ms GNU C++20 (64) -- Time taken: 15 ms
What about software design, conventions and standards?
This is competitive programming. The goal is to complete the program with minimum effort and maximum efficiency. Using single character variables and ugly formatted code are okay, as long as the program runs and runs well within the scope. Later in life, when you start working in a professional environment, please beautify your ugly code, follow conventions, add comments and make your code readable.
Conclusion
If there is anything you would like me to add to this article, feel free to comment below or contact me. Thanks.
Related Posts
If you have any questions, please contact me at arulbOsutkNiqlzziyties@gNqmaizl.bkcom. You can also post questions in our Facebook group. Thank you.