MikeMirzayanov's blog

By MikeMirzayanov, history, 3 days ago, translation, In English

Hello, Codeforces!

Only a couple of days remain until 2025. To wrap up the year, I'm bringing an update — I hope you'll find it useful.

Now, you can automatically find and add random problems for your mashup based on a range of criteria and restrictions. The problems are sourced from the archive, and unusual problems are automatically excluded.

So, click the "Add random problems" link under the problem list and proceed to the addition form.

Here's what you can do:

  • Exclude problems that registered mashup participants have solved/attempted/authored (a problem will be excluded if at least one registered participant is familiar with it),
  • If the mashup belongs to a group (e.g., your training group), exclude all problems from other contests in that group,
  • Exclude problems with subtasks — such problems are often interconnected or reference each other,
  • Simply specify a list of handles or user lists for whom familiar problems should be excluded,
  • And finally, the most advanced option: in the "Problem Requirements" field, you can specify requirements for the problems to be added in a special format.

The "Problem Requirements" field describes the number and properties of the problems you want to find. By clicking the question mark icon, you'll see the following explanatory text.

Enter one or more lines. Each line specifies requirements for a single problem. A line must start with the Latin letter p, followed by a space, and then additional parameters can be specified:

  • Short problem name (its letter in the contest);
  • Problem difficulty requirements (e.g., ratings:1000-1200, ratings:2000, ratings:3000-, or ratings:-1000: leaving the number on the left or right of the hyphen empty means the corresponding boundary is not set);
  • Tags (use tags: and provide a comma-separated list of tags, e.g., tags:dp, binary search, brute force): a problem containing at least one tag from the list will be selected.

Examples of requirement lines:

  • "p": any problem, the letter in the contest will be assigned automatically;
  • "p F": any problem assigned the letter F;
  • "p ratings:2000-2400": a problem with a difficulty level between 2000 and 2400, with the contest letter assigned automatically;
  • "p D ratings:-1200 tags:greedy,dp": a problem with a difficulty level of no more than 1200, containing the tag dp or greedy (or both), assigned the letter D.

When you click the "Find Problems" button, you'll be presented with a list of problems to add. You can press the button repeatedly to generate different lists. In this list, you can mark the problems you like and finally add them to your mashup.

Note that next to the "Find Problems" button, after pressing it, additional statistics will be displayed. These can help you navigate the ratings of available problems under the specified restrictions.

I hope this makes finding problems for your training sessions and competitions easier.

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

»
3 days ago, # |
  Vote: I like it +28 Vote: I do not like it

Is there an option to exclude certain tags of problems too?

  • »
    »
    35 hours ago, # ^ |
      Vote: I like it +8 Vote: I do not like it

    That will be great!

  • »
    »
    23 hours ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Also could we have a filter, to select problems by their letters and divisions. For example, generate a mashup of Div2 B's or just a filter problems by letter feature on the problemset page.

»
3 days ago, # |
  Vote: I like it +62 Vote: I do not like it

This is a $$$legendary$$$ update!

»
3 days ago, # |
Rev. 2   Vote: I like it +9 Vote: I do not like it

this is a legendary,epic and unique update

»
3 days ago, # |
  Vote: I like it +11 Vote: I do not like it

Nice update!!!!

»
3 days ago, # |
  Vote: I like it +5 Vote: I do not like it

good update!!!!!!!!!!

»
3 days ago, # |
  Vote: I like it 0 Vote: I do not like it

super update

»
3 days ago, # |
  Vote: I like it -6 Vote: I do not like it

great news!!!!

»
3 days ago, # |
  Vote: I like it +22 Vote: I do not like it

unusual problems are automatically excluded.

What type of problems are deemed "unusual"?

  • »
    »
    3 days ago, # ^ |
      Vote: I like it +13 Vote: I do not like it

    Something like April Fools contests or Kotlin Heroes probably.

»
3 days ago, # |
  Vote: I like it +1 Vote: I do not like it

A very cool New Year's update

»
3 days ago, # |
  Vote: I like it +17 Vote: I do not like it

This is a common/unusual/rare/epic/legendary/mythic/ultra/super/unique update.

»
3 days ago, # |
  Vote: I like it +32 Vote: I do not like it

is there a way to filter old problems? i think this is very important

  • »
    »
    3 days ago, # ^ |
      Vote: I like it +66 Vote: I do not like it

    second this @Mike, old problem styles are very different. Maybe a filter for the contest number/problem-id should do the trick:

    p contest_id>=1542

    • »
      »
      »
      44 hours ago, # ^ |
        Vote: I like it +24 Vote: I do not like it

      Thanks. We've implemented the "exclude problems created before" option.

      • »
        »
        »
        »
        17 hours ago, # ^ |
        Rev. 2   Vote: I like it -9 Vote: I do not like it

        Thanks! How to use it? Like what's the keyword, an example would be great!

        Edit: My bad, Got it.

»
3 days ago, # |
  Vote: I like it +6 Vote: I do not like it

superb update

»
3 days ago, # |
  Vote: I like it +6 Vote: I do not like it

this is rare,epic ultra super update

»
3 days ago, # |
  Vote: I like it +1 Vote: I do not like it

I no longer need a discord bot to give me training problems, great news

»
3 days ago, # |
  Vote: I like it 0 Vote: I do not like it

Finally

»
3 days ago, # |
  Vote: I like it 0 Vote: I do not like it

Awesome Feature, The problem requirement field is great now!

»
3 days ago, # |
  Vote: I like it +10 Vote: I do not like it

Can you add multiple random problems at the same time?

»
3 days ago, # |
  Vote: I like it 0 Vote: I do not like it

Where can we access this update

»
3 days ago, # |
  Vote: I like it 0 Vote: I do not like it

Woah, Love this platform!

»
3 days ago, # |
  Vote: I like it 0 Vote: I do not like it

love it !! this will be very useful

»
3 days ago, # |
  Vote: I like it +43 Vote: I do not like it

Really Good Feature for practicing, eagerly waiting for using this.

Can we exclude some certain contest problems like div3, div4 ? Because they are overrated mostly.

»
3 days ago, # |
  Vote: I like it 0 Vote: I do not like it

good

»
3 days ago, # |
  Vote: I like it +9 Vote: I do not like it

Bro just killed my CLI Tool. Seriously though, this is a better solution GG!

»
3 days ago, # |
Rev. 2   Vote: I like it -22 Vote: I do not like it

Nice addition to codeforces!

»
3 days ago, # |
  Vote: I like it +9 Vote: I do not like it

Amazing feature!
Meanwhile, I feel like a clown because I coded the same thing 2 days ago.

Spoiler
»
3 days ago, # |
  Vote: I like it 0 Vote: I do not like it

best feature till date

»
3 days ago, # |
  Vote: I like it 0 Vote: I do not like it

this is a mythic TOURIST update!

»
3 days ago, # |
  Vote: I like it -17 Vote: I do not like it

Request for a filter of "exclude problems solved by users:". MikeMirzayanov

»
3 days ago, # |
  Vote: I like it 0 Vote: I do not like it

W

»
3 days ago, # |
  Vote: I like it +4 Vote: I do not like it

where we can access this feature? like which section on the website?

  • »
    »
    3 days ago, # ^ |
    Rev. 2   Vote: I like it 0 Vote: I do not like it

    I guess it will be launched on New Year.

    Edit: I am sorry, it is present in Mashup section.

  • »
    »
    3 days ago, # ^ |
      Vote: I like it +4 Vote: I do not like it

    This feature is only for mushup, you can access it through:

    GYM -> MUSHUP -> create a new mushup -> click the "Add random problems" under the problem list

    (seems unfriendly for those who are unfamiliar with MUSHUP? (Including me))

»
3 days ago, # |
  Vote: I like it +8 Vote: I do not like it

Request for a filter of "problems between date X and Y"

»
3 days ago, # |
  Vote: I like it +39 Vote: I do not like it

I think having some kind of filters on:

  1. freshness of the problem either between contests X and Y or dates X and Y
  2. Divisions (1,2,3,Educations, ...etc) + Problem character (A,B,C,D)

Might be a good idea because old problems aren't targeted by a lot of people also sometimes people don't wanna ruin gyms, or target their practice on div.2/1 problems

»
3 days ago, # |
  Vote: I like it 0 Vote: I do not like it

I made a list of users to exclude their solved problems , including my Handle , There is 2 solved problems by me of 5 problems

I solved these problems in the problem set not private contest :( Mash id : 576921

So..Is this a problem or I made something wrong ? I put name of user List

»
3 days ago, # |
  Vote: I like it +3 Vote: I do not like it

Can someone please tell me how do I get this page? I am having difficulty finding it.

  • »
    »
    3 days ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    GYM -> MUSHUP -> create a new mushup -> click the "Add random problems" under the problem list

    • »
      »
      »
      2 days ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      i still can't see can you attach a ss

      • »
        »
        »
        »
        2 days ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        me too

        • »
          »
          »
          »
          »
          2 days ago, # ^ |
            Vote: I like it +51 Vote: I do not like it

          Step 1:- Open Codeforces

          Step 2:- Click on GYM on top.

          Step 3:- Click on MASHUPS.

          Step 4:- Click on Create new mashup

          Step 5:- Write Name of your Mashup and Duration. I gave Name as Hi and duration 30 min.

          Step 6:- Scroll down and Click on Create Mashup Contest.

          Step 7:- Click on Add random problems.

          Finally, here you goo...

          • »
            »
            »
            »
            »
            »
            34 hours ago, # ^ |
              Vote: I like it 0 Vote: I do not like it

            i don't have the "create a new mashup" button

            • »
              »
              »
              »
              »
              »
              »
              21 hour(s) ago, # ^ |
                Vote: I like it 0 Vote: I do not like it

              take part in contest's, then you will

»
2 days ago, # |
  Vote: I like it 0 Vote: I do not like it

Is there a way to hide the tags of randomly selected problems to avoid spoilers?

»
2 days ago, # |
  Vote: I like it 0 Vote: I do not like it

nice update :) , just yesterday I was hoping we had something like this!!

»
2 days ago, # |
  Vote: I like it 0 Vote: I do not like it

I think an option could be added so that those problems selected by the user could be sorted chronologically.

»
2 days ago, # |
Rev. 2   Vote: I like it +12 Vote: I do not like it

Thank you so much! Will there be an api for random problem under certain restrictions?

»
2 days ago, # |
  Vote: I like it 0 Vote: I do not like it

can there be a feature to hide the tags when searching for random problems?

»
2 days ago, # |
  Vote: I like it 0 Vote: I do not like it

This is awsome new year present by codeforces. Thanx codeforces team!!

»
47 hours ago, # |
  Vote: I like it +8 Vote: I do not like it

Maybe add option for Excluding problems from $$$Div$$$ $$$\ge$$$ $$$X$$$ , because div3-div4 problems are inflated

»
44 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

A great improvement!

»
43 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

yay i love it!

»
33 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

Thanks!

Please also make it easier to filter div1 problems. Maybe it could be a problem tag? It would be a really amazing feature for the problemset page.

Currently, even trying to do this manually using the API seems to require multiple API calls and non-trivial logic. I've tried those ideas at some point. Are there any better ways?

  • Fetch problemset and contest list, match each problemset problem to a contest and then parse the contest name and see if it contains Div. 1 or global round or good bye or hello or ...

    • (this gets extra confusing with some exceptions like VK Cup and Croc which may or may not be div1)
  • Fetch the rating changes of top ~30 people and assume that at least one of them has participated in every div1 contest. So the union of contest ids from their rating changes is close to a complete list of div1 contests

»
30 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

This is a really useful update!

»
29 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

This might sounds unrelated, but what about the rating deflation ?. I mean like problem with rating 1600 in 2019-ish is way easier ( at least for me ) than 2024's one

»
24 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

Luogu also has this function. It's really useful. Codeforces is being better and better :)

»
24 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

How can I exclude interactive problem?

»
24 hours ago, # |
Rev. 2   Vote: I like it 0 Vote: I do not like it

I've attempted to do a similar version to this earlier as a small go-lang learning project here.

While implementing this, I encountered the following limitations:

  1. Problems solved for a user inside groups (or other mashups) weren't visible from the API.
  2. Gym problems were not included.
  3. Overlapping rounds (Div1-Div2) were a bit non-trivial to link (e.g., 1972 and 1967).

MikeMirzayanov, could you please touch on these aspects and clarify if the new tool simply resolves those limitations?

»
23 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

— I hope you'll find it useful.

Definitely do !

»
22 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

HAPPY NEW YEAR !!!

»
21 hour(s) ago, # |
  Vote: I like it 0 Vote: I do not like it

Update dark theme pls sir<3

»
21 hour(s) ago, # |
  Vote: I like it 0 Vote: I do not like it

Thanks for the update!

smth
»
21 hour(s) ago, # |
  Vote: I like it 0 Vote: I do not like it

this is legendary update and promotion

»
18 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

Nice update!!

»
17 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

Happy new year