Hello cool coders! This is my first post on CF. This is to share a small tool I built using the codeforces api. Give it a try here: http://cfviz.netlify.com. The source is available here. Please let me know if you found any bug or issue.

Current features are:

## Single User Analytics

- Verdicts chart
- Languages chart
- Tags chart
- Levels chart
- Total tried problems count
- Total solved problems count
- Average and max attempts
- Count of problems solved with one submission
- Max AC for a single problem (It indicates in how many ways someone solved a problem)
- List of unsolved problems

## Comparison between two users

- Current, max and min rating
- Number of contests
- Best and worst position in contest
- Max positive and negative rating change
- Compared rating time-line
- Total tried problem count compared
- Total solved problem count compared
- Average and max attempts compared
- Count of problems solved with one submission compared
- Max AC for a single problem compared
- Tags compared
- Levels compared

## Update: Two new features added

Two new features was added since this post was published. 1. Submissions heatmap in single user analytics 2. Common contest rank in comparison

I (square1001) competed in 2 contests and rated 1558 -> 1673, but it says that my Max Down is 58.

Is it a bug?

Yes it was a bug. Fixed. Thanks a lot. I was counting lowest rating change as max down. In your case you don't have any negative rating change. So your lowest rating change was being counted as max down.

Better have a look at my standup

It's in Russian

i know

lol

Keeps loading forever in Safari. Working fine in Chrome though.

Your site says that I have solved 912 problems. According to Codeforces, I have solved 876 problems, plus 26 in gym. I guess you might counted in problems appear in both divisions twice?

What I'm doing is iterating over all of their submissions and counting the unique number of problemIds that got AC. Here I'm concatenating contestId and problem index to get problemId.

So if somebody submits one problem from both divisions, it's supposed to get counted twice. But why would somebody do that? I'm not sure whats going on here.

What if someone submitted to Div2 C during contest, and then submitted an improved version through PROBLEMSET after the contest, which would go to Div1 A.

Oh yes, now I get what's happening. So you did so like 10 times in total? Because in your case it's showing 10 more problems

I also made submissions to test if Codeforces would exclude duplicates while counting the number of problems you solved.

How do you look at the number of problems solved (according to codeforces)?

http://mirror.codeforces.com/problemset/standings

If you like solving problems, solve harder ones.

Thanks for your suggestion. I will get there, I'm currently solving problems in decreasing order of the number of people who have solved it.

Looks very neat.

I think it would be more meaningful to distinguish between classic rounds and other types of rounds, such as marathon ones (e.g. VK Cup 2016 - Уайлд-кард раунд 2 and Codeforces Marathon Round 1). The problem with them that usually you do a lot of submissions to be evaluated on pretests before submitting your best attempt. As you can see, this heavily impacts submission stats (the large number of skipped solutions):

Also, it would make much more sense if Div2A's and Div2B's were made into a separate entity (now, there's no distinction between Div1

~~A~~D and Div2~~A~~D when counting, right?)Thanks for your valuable opinion. But unfortunately doing so doesn't seem possible to me with the information CF API provide :(

i liked the idea and by the way i think it will be perfect if codeforces puts some of these numbers in our profiles

The best rank of uwi appears to be 0.

Seems like CF API issue https://www.dropbox.com/s/4rtdjlnpma1ocix/Screenshot%20at%202017-02-10%2012%3A09%3A09.png

sorry but how do you attach photo to comment?

Perhaps rank 0 means being unrated for any reason: participating out of competition, choosing to be unrated after a conditionally unrated round, being disqualified, etc.

You can try dropping all 0s and see if the result without them makes any sense.

Woah! It shows all of my unsolved problems. Really helpful.

sjsakib Can you tell me how did you pick up unique problems from the submissions when the same problem was in Div1 and Div2 and the user had solved it in both the divisions? Also, if the user has solved the problem in both Div1 and Div2, which one will you consider in making the bar chart for index wise solved problems (Will you put it in both A and C (if it was A in Div1 and C in Div2) or will you put it in only one of them)? Thanks in advance.

How do I get the number of problems solved at each rating??

Please add a "**acceptance heatmap**" in single user analytics, if it possible.

Thank you for your amazing creation...!