Starting this July we’re going to feature individuals that stand out from amongst the rest on CodeChef as the “Programmer of the Month”. Every month we will nominate one individual, who we think deserves a special mention.
And the Programmer of the Month for July is Keshav!
You must be wondering why Keshav is the Programmer of the Month without winning any of the CodeChef Challenges. He was surprised as well. : ) The reason why we’re so impressed with Keshav is because he is all of seventeen years old! Without a formal degree this young programmer has stood 7th in the June Algorithm challenge. Well done, Keshav!
Name: Keshav Dhandhania
Institute: Lakshmipat Singhania Academy, Kolkata.
CodeChef Userid: keshav_57
Brief introduction about yourself (under 140 characters):
Nothing very special about me. Just a usual school kid I guess, who was fortunate enough to receive some good guidance from people around him.
How/When did you start programming?
A cousin of mine introduced me to TopCoder in 2007 when he saw some of my prizes in math Olympiad. Since then, I have pretty much given up math for programming.
What do you do when you’re not programming?
Spend time with friends, watch a movie or a sport, listen to music and play some online games.
What do you like most about CodeChef?
The prizes top the list. The problems which I cannot solve come next!
How many hours a day do you program?
Depends. On a usual basis I program for a couple of hours a day. Currently, I’m putting in more hours because I need to practice for IOITC.
What’s your favourite book and why?
No favorite. I like books on neurology, and novels are always welcome!
If you could eat dinner with any famous person (past or present), who would it be and what dish would you have?
Person: Chuck Norris?
Dish: Anything from the Chef would be great.
What are your plans for the future?
Have not thought about it very seriously. I won’t leave competing for sure.
We’ve had some complaints in the last contest about participants reverse engineering test data. While this isn’t necessarily “wrong,” in keeping with the spirit of finding the best solutions to the problems given, we’ve instituted a small rule change. This time around, the challenge problem will be rejudged at the end of the contest, with entirely new test data.
We considered other approaches for all problems including:
* Rejudging all solutions at the end of the contest with new test data (not just the challenge problem)
* Capping the number of submissions per user per day
* Allowing users to only submit solutions at certain time intervals (i.e. one solution per five min)
In the end we have done our best to come up with better, bigger and more random test cases and are holding off on these other change (for now). If you believe there are additional ways to improve the contest format, please let us know.
Amit (The Chef)
p.s. if you wanna see how pretty I am, check out our new Twitter background.
p.p.s don’t forget our first DesignChef competition along starts tomorrow, help us out… spread the word.
Well, a lot of people seem to be having the same kind of questions across different forums and different problems. Here is a brief list of questions that have been coming up quite frequently over the past few weeks, and some hints on what you should do to solve the issue.
Q. What compilers do we use?
A. The compilers for the different languages are specified when you select the language while submitting the solution. Code compiled on other non-standard compilers cannot be guaranteed to compile on the online judge system.
Q. What are the system specifications?
A. As of now, the specifications of the system on which the judge executes the solutions are :
Operating System : Gentoo Linux
Processor : Quad Core Intel running at 2.33 GHz
Memory : 4 GB of RAM (64 MB guaranteed for each submission)
Storage : 160 GB effective storage using SATA RAID 0 configuration
Network Link : 144 Mbit maximum throughput
Q. I can’t seem to find the compilers being used by Codechef. Can you give me a link?
A. The IDEs / Compilers / Interpreters for some commonly used languages are listed below.
C / C++ : You can use the Dev C++ IDE if you are on windows – http://www.bloodshed.net/dev/devcpp.html
Java : Download the Java Development Kit from the Sun website – http://java.sun.com/javase/downloads/index.jsp
Python : Download the python interpreter from – http://www.python.org/download/
Perl : Download perl from http://www.perl.com/download.csp
Ruby : Download it from http://www.ruby-lang.org/en/downloads/
C# : Download it from http://www.microsoft.com/express/vcsharp/
You can use flags like -O2 in C or C++ to turn on compiler level optimization.
Q. Why does my code compile fine in Turbo C but not on the Codechef Judge?
A. The Codechef Judge uses the GNU compiler collection. Turbo C uses some non-standard headers and as such should not be used. A standards compliant C code written under Turbo C will compile fine on the online judge.
Q. Can I include the file conio.h?
A. No, conio.h is not a standard header file and as such is not available under the GNU compiler collection. Code which includes conio.h will not compile on the online judge.
Q. What should I name the class in a java solution?
A. You should name the class as Main. Failure to do so will result in a compilation error on the online judge system.
Q. Do I need to take the input for all testcases at once before processing it?
A. No, you need not take all the input at once. You can take the input for a particular test case and output the answer and then proceed to the next test case. Program should read from standard input and write into standard output. There is no need to read all data first, compute them all and then print all output. It is recommended to read and write data as simultaneously. Technically, server redirects standard stream to files. You can test you programs in the same way at home.
Q. Can I get the input for which my program failed?
A. Currently it is not possible to get the input for which your program fails. Thinking out corner cases is a part of the fun associated with algorithms
Q. How do I take input for problems which do not specify a distinct terminating condition or the number of test cases?
A. In cases where the total number of test cases are not specified or some input doesn’t serve as the terminating input, you are expected to take input till an EOF marker is encountered. While testing, you can terminate the input in the command line by pressing the <ctrl> and <z> keys together.
Q. How do I get the execution time of a program in Linux?
A. After compiling the program, say you have the output file with the name ‘solution’, then, you can get the execution time by using the command “time ./solution”. The sys and user times are what you should be looking at in the output.
Q. The code runs within the time limit on my system, but I get a TLE on Codechef. Why is that so?
A. TLE stands for Time Limit Exceeded. The configuration of your system might be different from the one we use. You need to optimize your algorithm or come up with a better algorithm.
Q. I can’t even take input or print output within the time limit, let alone processing the input. What should I do?
A. Make sure you have submitted an efficient solution to http://www.codechef.com/problems/INTEST/ and http://www.codechef.com/problems/TEST/ and make sure you read http://blog.codechef.com/2009/02/24/54/
Q. The time limit for the problem is 2 seconds, but some accepted solutions take more time. How is that possible?
A. This can happen if the problem has multiple test case files. The time mentioned in the constraints is per input file. If there are multiple input files, then the total time taken for executing all of them is displayed. For example, if the time constraint for the problem is 2 seconds and there are 8 input files, then your program must take at most 2 seconds for any particular input file, but the total time displayed will be the sum of the execution times for the 8 input files and this may exceed 2 seconds.
Q. Why do I get an error called SIGSEGV?
A. A SIGSEGV is an error(signal) caused by an invalid memory reference or a segmentation fault. You are probably trying to access an array element out of bounds or trying to use too much memory. Some of the other causes of a segmentation fault are : Using uninitialized pointers, dereference of NULL pointers, accessing memory that the program doesn’t own.
Q. Why do I get an error called SIGABRT?
A. A SIGABRT is caused if your program aborted due to a fatal error. This can also be caused if you are using an assert() which fails or an abort().
Q. Why do I get an error called SIGFPE?
A. A SIGFPE is caused by a floating point error. Your program is encountering such an error, probably a division by zero or some similar undefined operation.
Q. Why do I get an error called NZEC?
A. NZEC stands for Non Zero Exit Code. Usually, returning non-zero values from main() will cause this error. It helps telling crash from WA (Wrong Answer) with interpreted languages. Typically this would happen if you omit a return 0; from main() in C. For interpreted languages or Java/C++, this could happen if your program threw an exception which was not caught (e.g. Trying to allocate too much memory in a vector).
If you have any other questions, do post them as a comment and we will try to incorporate them into the FAQ.
We are pleased to announce our winners for our first ever Gamer’s Challenge. (drum roll please….)
Kushagra Gour – Chef of War – All around awesome game, well done!
Meet Shah – The Spoon Hunt – This game was a lot of fun to play (a staff favorite), we wish the graphics were a little better.
We have some other “honorable mention” awards, winners of these will each receive t-shirts.
Best Looking Game
Jugal Manjeshwar – CodeName Chef – Beautiful game, gameplay is repetitive though. By varying the enemies on different levels or including some power-ups this could have been great.
Nikhil Marathe and Denny George – Little Chef – Hilarious story, we really enjoyed it. Game is too hard/quick though.
Best Game by Someone Who has Already Won a Prize
Kushagra Gour – Squash the Bugs – Another great game
Best Use of Binary Dumps and Dangling Pointers
Rasagy Sharma – Run Chef Run – Excellent concept for a game, love the floating pointers. Gameplay is original as well.
Thank you everyone who participated, this was a lot of fun for us, hope you enjoyed it as well. We will have other types of gaming contests in the future.
Update Aug 3rd… We now have photos of the winners with their prizes
We are pleased to announce that prizes for the July Algorithm Contest will be available for participants in the US.
What’s the July contest format?
The contest will begin on July 1st at 15:00 IST and end on July 13th at 15:00 IST. Although this is longer then the last 10 day contest, we wanted to give you that extra weekend. The contest will have 6 to 8 problems with one challenge problem (identical in format to our June and May contests).
Will participants in India and US be competing against each other?
…only in spirit. The contest problems and format will be exactly the same for all participants. The rankings will be combined, but the top 5 scorers in India will receive prizes and the top 5 scorers in the US will receive prizes.
blahbity blahbity blah, tell me about the Prizes already
Aright aright, here is the tentative prize breakdown (please note this is subject to change and will be finalized by July 1st).
1st – $700
2nd – $400
3rd – $250
4th – $125
5th – $75
1st – Rs. 35,000
2nd – Rs. 20,000
3rd – Rs. 12,500
4th – Rs. 6,250
5th – Rs. 3,750
What happens if there is a tie?
In the unlikely event of a tie, we will split the prize money across the participants. For instance if the 3rd and 4th place US participants tie, they will each receive ($250 + $125) / 2 = $187.50.
Wait a second I’m from [insert country that isn't US or India] does that mean I can’t participate?
Sure you can participate, though unfortunately you can’t win the cash prizes. If you make it to the top of the leaderboard we will be sending you some sweet CodeChef merchandise (we’ve got some dope new t-shirts in the works). We are exploring the idea of expanding into other geographies and will let you know as soon as we do.
Are you making any other new changes soon?
Yes, you will be seeing some big changes to the site in the next few weeks, we’ve received a lot of feedback in terms of how we can improve the site and are working on developing CodeChef 2.0. We will show you a sneak-peak of some of these new features soon.
A lot of people have complained that a 10-day contest it too long. Worry not CodeCheffers, next month we will also hold a shorter contest.
Anything else you want to tell us about?
Oh yeah, we also launched DesignChef last week, a non-profit, online graphic and user experience design competition. Check it out!
CodeChef.com has some of its merchandise up for grabs. You could be one of the lucky few to get your hands on them!
CodeChef will be posting two brain teasers everyday on Twitter starting 22nd June to 25th June. If you can answer at least one puzzle, you are eligible to win a CodeChef t-shirt. At the end of each day we will randomly pick five names from all the correct entries and send them their prize. At the end of the contest we will select one person who has answered the most puzzles correctly and send them an Amazon gift voucher worth $25 (if there is a tie, a winner will be chosen randomly).
Instructions to participate of the contest
1. Follow CodeChef on Twitter and be on the lookout for two puzzles posted daily around 11:00 AM and 7:00 PM.
2. Once the question is posted, you have 24 hours to submit your response.
3. All submissions should take the form @codechef *your answer* #codechef (Please include the hashtag so we can easily track the responses)
4. Answer at least one question right and you’ll be eligible for a free t-shirt. If you crack both the questions you’ll double your chances for that day.
5. We will declare the winners around 8:00 PM everyday.
6. The winner of the Amazon gift voucher would be declared at the end of the five days (26th of June 09 around 9:00 PM).
7. You can attempt as many questions as you like, multiple times. The more questions you answer correctly, the better your chances will be to win.
Congratulations to all those who participated, well done! We are happy to see a bunch of new folks at the top of the leaderboard. We’d like to congratulate our top scorers:
1. Varun Jalan, D.J. Sanghvi
2. Ajay Somani, Google India
3. Erjin Zhou, China
4. Prunthaban L., Google India
Currently, only participants residing within India are eligible for prizes, which means Prunthaban will take home the third place prize. If it’s any consolation Erjin, we’ll still be sending you a t-shirt and some other CodeChef goodies.
For those who’ve got a score of 4 and above, we’ll be contacting you and sending a CodeChef t-shirt your way (international folks included!)
Also, you can download the test cases from here.
I’d like to remind you that the date for submitting your browser game for the Gamers’ Challenge is this Monday (the 15th), so be sure to send in your entries soon.
The June Algorithm Challenge just went live today at 3 pm. The contest will be open for submissions until June 11th, 2009. This time around instead of prizes, a total of Rs. 50,000 in cash is up for grabs! The rules are the same with 2 additional problems.
In the mean time do check out some really fun games that folks have submitted for the May Gamers Challenge. In case, you want to participate in that, you have until the 15th of this month to submit your game.
As always, if you have any feedback about CodeChef, feel free to get in touch with us at email@example.com.