# python3
import requests
import numpy as np
import matplotlib.pyplot as plt
cf = "http://codeforces.com/api/"
def call(method, params):
url = f"{cf}{method}"
req = requests.get(url, params=params)
if req.status_code == 200:
return req.json()
"""
Some Contests' id:
Good Bye 2019 : 1270
Edu 79 : 1279
Global 6 : 1266
Div3 #611 : 1283
Div2 #608 : 1271
Div1 #609 : 1268
Codefest 19 : 1208
"""
rating = [[1200, "gray"],
[1400, "green"],
[1600, "#03a89e"],
[1900, "blue"],
[2100, "#aa00aa"],
[2400, "orange"],
[3000, "red"],
[9999, "black"]]
data = call("contest.ratingChanges", {"contestId": "1208"})["result"]
title = data[0]["contestName"]
print(title)
delta = np.zeros((len(data),), dtype=np.int64)
color = []
for i in range(len(data)):
delta[i] = data[i]["newRating"] - data[i]["oldRating"]
for j in range(len(rating)):
if data[i]["oldRating"] < rating[j][0]:
color.append(rating[j][1])
break
plt.figure(figsize=(8, 6))
plt.title(title)
plt.xlabel("Rank")
plt.ylabel("Delta Rate")
plt.yticks(np.arange(-300, 301, 50))
plt.ylim(-300, 300)
plt.grid()
plt.scatter(np.arange(len(delta)), delta, s=0.5, c=color)
plt.show()