Hello everybody,
So two-three weeks ago I started learning C#. I decided to code some problems in C# after doing that in C++ in order to practice it and of course learn some things I don't know to do in that language.
Today I came across this problem — http://mirror.codeforces.com/problemset/problem/220/B and I coded Mo's algorithm in C++. It easily got accepted with time about 2 seconds (the time limit is 4 seconds) — http://mirror.codeforces.com/contest/220/submission/15191708. Then I moved to C# and after more than an hour spent in looking for 'how to write a comparator for Array.Sort for custom class in C#', I finally submitted a code in C# — http://mirror.codeforces.com/contest/220/submission/15192611. As it can be seen, it gave TLE on the fifth test.
Then I read that for large arrays, Array.Sort uses quick sort, so I added a random shuffle before the actual sorting — http://mirror.codeforces.com/contest/220/submission/15192841, still TLE #5. I started looking for a faster input method and I read that BufferedStream may help — http://mirror.codeforces.com/contest/220/submission/15193006 — unfortunately, it didn't. At the end, I tried to store the whole output in a StringBuilder and then output it but I got TLE once again — http://mirror.codeforces.com/contest/220/submission/15193128.
Can anyone please suggest a way to speed the program up? I am quite new to C#, I tried using google but I found no more than what I described in the post.
Thanks in advance! :)