By Adhami, history, 7 months ago, ,

If you ask a Jordanian competitive programmer for a training advice, there is 98% chance that he would recommend you to solve Educational Rounds, ask Hiasat. However, getting your progress in Educational round tracked is hard, so here it comes!

I wrote this script way before, but my friends recently encouraged me to post it. It gets every Educational Round and what you have already solved in it.

import urllib.request, json
import datetime
s = []
w = []
with urllib.request.urlopen("https://codeforces.com/api/contest.list") as url:
for x in data["result"]:
if x["name"].startswith("Educational"):
w.append(x["name"])
s.append(x["id"])
e = [""]*len(w)

#Edit this line to your handle:
USER_NAME = "CPX"

with urllib.request.urlopen("https://codeforces.com/api/user.status?handle="+USER_NAME) as url:
for x in data["result"]:
if "verdict" in x and "contestId" in x:
if x['verdict'] == 'OK':
for i in range(0,len(s)):
if x["contestId"] == s[i]:
e[i] += x["problem"]["index"]
break
def contest(solved):
if solved == "":
return solved
ans = [" "]*(ord(solved[-1])-ord("A")+1)
for x in solved:
ans[ord(x)-ord("A")] = x
return "".join(ans)
for i in range(0,len(w)):
print("#" + str(i+1) + " https://codeforces.com/contest/" + str(s[len(w)-i-1]) + "\t: " + contest("".join(sorted(set(e[len(w)-i-1])))))



Change USER_NAME to match yours, and it will print it in this format:

#1 https://codeforces.com/contest/598	: AB DE
#2 https://codeforces.com/contest/600	:  BC E
#3 https://codeforces.com/contest/609	: ABCDE
#4 https://codeforces.com/contest/612	: ABCDE
#5 https://codeforces.com/contest/616	: ABCDE
...
#57 https://codeforces.com/contest/1096	: ABC
#58 https://codeforces.com/contest/1101	: ABCDE
#59 https://codeforces.com/contest/1107	: ABCD
#60 https://codeforces.com/contest/1117	: ABCDE
#61 https://codeforces.com/contest/1132	: ABC



You can copy it or print the output to a file. Check my script for Country-Wise standing.

And as always:

Solve Educational!

• +87