I wrote this post to help my friend , Iman Movahhedi , complete this one.

Round #40 was my first contest here in Codeforces and I feel I fell in love with CF just after that.

**A-Translation:**(C# code)

Many languages have built-in reverse() function for strings. we can reverse one of the strings and check if it's equal to the other one , or we can check it manually. I prefer the second.

**B-Martian Dollar:**(C# code)

Since number of days is very small (2 × 10

^{3}) we can just iterate over all possibilities of buy-day and sell-day. This will take θ (*n*^{2}) time which is OK.**C-Email Address:**(C++ code)

The first letter of the input string can not be part of an "at" or a "dot" so we start from the second character. Greedily put "." wherever you reached "dot" and put "@" the first time you reached "at". This will take θ(

*n*) time , where*n*is the length of input.**D-Pawn:**

For each cell of the table store

*k*+ 1 values. Where*i*th value is the maximum number of peas the pawn can take while he is at that cell and this number mod*k*+ 1 is*i*.This makes a

*O*(*n*^{2}×*m*×*k*) dynamic programming which fits perfectly in the time.**E-3-cycles:**(C++ code)

The road map with most edges is a complete bipartite graph with equal number of vertices on each side. (Prove it by yourself :D ). We can make such a graph by putting the first vertices on one side and the other on the other side.For sure , number of edges is .

To help understand the proof for E, check this comment http://www.codeforces.com/blog/entry/843#comment-13876

I think problem D can be solved in O(nmk), see code.

you mean D :)

Thanks!

Bkl