Droby's blog

By Droby, history, 4 months ago, In English

Hello Codeforces!

We are excited to announce that The 2026 ICPC ASU Collegiate Programming Contest, which was held on May 21, 2026, is now available in the Gym under the name of ASU Coding Cup 11 for everyone to try.

We are excited to share the contest with the competitive programming community, and we hope that competitive programmers around the world will enjoy solving the problems as much as we enjoyed preparing them.

If you attempt the contest, we encourage you to share your feedback, discuss the problems, and compare your solutions with other participants.

If you were able to solve Problem H without any hints, editorials, or external help AND you manage to get it accepted on your very first submission, you will earn our respect, and more importantly, we might reveal to you the individuals that were called "3awatleyyet El ASU" along with the backstory of the problem.

All problems were authored and prepared by D7br, Zpider.Mukhtar, and Droby.

We would like to express our special thanks to Kareem_Elgoker, Rayo, samsoom, and the_seal for testing and verifying the problems.

We would also like to give special thanks to Ayoub.Aref for adding the contest to the Gym and making it available for everyone to enjoy.

Full text and comments »

  • Vote: I like it
  • +18
  • Vote: I do not like it

By Droby, 17 months ago, In English

Introducing atcoder-api — A TypeScript/JavaScript Wrapper for AtCoder

Hi Codeforces!

I'm excited to share a new npm package I built:
atcoder-api — a lightweight and fully typed API wrapper to fetch user stats, contest info, and rating history from AtCoder!


Features

  • Fetch upcoming and recent contests
  • Get detailed user profiles and statistics
  • Retrieve user contest participation history
  • Built-in rate limiting to avoid server overload
  • TypeScript support out of the box
  • Lightweight and fast

Installation

npm install @qatadaazzeh/atcoder-api

Usage

Fetching Contests

import { fetchUpcomingContests, fetchRecentContests } from '@qatadaazzeh/atcoder-api';

// Get upcoming contests
const upcoming = await fetchUpcomingContests();
console.log('Found '+ upcoming.length +' upcoming contests');

// Get recent contests
const recent = await fetchRecentContests();
console.log('Found ' + recent.length+  ' recent contests');

Getting User Info

import { fetchUserInfo } from '@qatadaazzeh/atcoder-api';

// Get user profile
const user = await fetchUserInfo('tourist');
console.log(user.userName + 'has a rating of ' + user.userRating);

// Access contest history
console.log('Participated in ' + user.userContests.length +' contests');

User Contest History

import { fetchUserContestList } from '@qatadaazzeh/atcoder-api';

// Get contest participation history for a user
const contestHistory = await fetchUserContestList('tourist');

// Find contests where the user's performance was above 3000
const highPerformance = contestHistory.filter(c => c.userPerformance > 3000);
console.log(highPerformance.length + ' contests with performance > 3000');

API Reference

Contest Functions

  • fetchContestList(type?: 'upcoming' | 'recent')
  • fetchUpcomingContests()
  • fetchRecentContests()

User Functions

  • fetchUserInfo(userId: string)
  • fetchUserContestList(userId: string)

TypeScript Types Exported

  • Contest — metadata about each contest
  • User — profile and rating details
  • UserContest — performance in contests

Notes

  • Not affiliated with AtCoder — it scrapes publicly available endpoints.
  • Please respect rate limits to avoid overwhelming servers.
  • MIT licensed and open to contributions!

Links


Feedback, suggestions, and contributions are welcome.
If you use it to build something cool — let me know in the comments!

Happy hacking and good luck in your contests!

Full text and comments »

  • Vote: I like it
  • +2
  • Vote: I do not like it