As many of you noticed, recent API changes broke several extensions, including the popular cf-getrating. Since the original creator seems to be inactive (no response to PRs or emails), I have forked and fixed the extension so we can all keep using this functionality.
What is LeekCF-Rating (cf-getrating)
For those unfamiliar, this extension allows you to see the difficulty rating of a problem while keeping problem tags hidden. Why??: Solve problems 100% on your own. Tags often act as spoilers (e.g., seeing "Dynamic Programming" tells you exactly how to approach the problem)
Since I am a new developer on the Chrome Web Store, you might see a warning stating: "This extension is not trusted by Enhanced Safe Browsing." This is a standard warning for new accounts (I'm a new developer). The extension is completely safe, collects zero data, and the full source code is available on my GitHub for anyone.
I kept the core logic identical to the original but updated the API call methods, icons, and readme to ensure it complies with Store policies and functions with the new Codeforces API changes (So it doesn't mark it up as a copycat). Feel free to leave suggestions, report issues, or submit a PR on GitHub. Cya on the next blog
icon
The icons are AI generated. If you have any designs and suggestions, that would be great
As in the last four years, we are very excited to invite IOI 2026 participants, leaders, and committee members to the International Olympiad in Informatics Discord server!
If you are or were an IOI delegation member, please feel free to become a part of the community using the following link.
This server is a great place to meet new people who are also participating in the Olympiad, make plans with them, share advice, practice together, or simply chat about random topics! The server also has multiple useful bots, such as TLE and Contest Reminder, that you can use to practice for the olympiad or simply have fun. You can also add the IOI tag to your Discord profile!
The Asia-Pacific Informatics Olympiad 2026 is just around the corner — scheduled for May 9th and 10th, 2026, and will be organized by Taiwan.
For those who haven’t heard of it, APIO is a prestigious IOI-style online contest featuring 3 challenging tasks over 5 hours. It's an important part of the IOI team selection process for many countries across the Asia-Pacific region.
Bitwise Operations was one of the most confusing topics for me at first. But once I started understanding how bits actually work, many CP problems suddenly became much easier to think about and optimize.
This blog is the result of a full day of grinding, where I tried to organize everything I know about bitwise tricks into a clear and structured form — from the basics to useful CP patterns. I tried to keep everything as simple and beginner-friendly as possible so that anyone can understand the core idea behind each trick instead of memorizing formulas. If even one trick from this blog helps someone solve a problem faster or understand bits more clearly, then this effort feels truly meaningful for me.
And finally, I want to express my deepest gratitude to Raha Ahmed for being The Strongest support in my CP journey. Her constant encouragement, belief and presence have played a huge role in shaping my progress and I’m truly grateful for everything she has done.
The Basics for Beginners :
Basics All - (click here)
Know The Bit
Binary is a number system that uses only two digits: 0 and 1. Each digit is called a bit. A binary number is just a way to represent a decimal number using powers of 2.
Binary : 1 0 1 0
Value : 8 4 2 1
Each position means a power of 2. If the bit is 1, we take that value. If the bit is 0, we ignore it.
So: 1010 = 8 + 2 = 10
and 1101 = 8 + 4 + 1 = 13
We usually read binary from right to left, starting from the 0th bit.
This is important because bitwise operations (AND, OR, XOR, NOT and Shifts) work directly on these bits instead of the decimal value. So if you understand binary properly, all bitwise tricks in CP become much easier to understand.
Watch for Better Idea :-
Bitwise AND (&)
Bitwise AND checks two bits one by one. The result becomes 1 only when both bits are 1. If any one of the bits is 0, the result becomes 0. You can simply think: both need to be 1.
Example :
1010
& 1001
------
1000
10 & 9 = 8
Bitwise OR (|)
Bitwise OR compares two bits one by one. If at least one bit is 1, the result becomes 1. Only 0 | 0 gives 0. You can simply think: one 1 is enough.
Example :
1010
| 1001
------
1011
10 | 9 = 11
Bitwise XOR (^)
Bitwise XOR checks whether two bits are different or not. If the bits are different, the result becomes 1. If both bits are same, the result becomes 0. You can simply think: different means 1.
Example :
1010
^ 1001
------
0011
10 ^ 9 = 3
Bitwise NOT (~)
Bitwise NOT flips every bit of a number. All 1 become 0 and all 0 become 1. It just changes every bit to its opposite value. This operation works on every bit individually.
Example :
~1010 = 0101
~10 = -11
Think => Why does this become negative ? info => ~n = -(n+1) but think How and Why ?
Left Shift (<<)
Left Shift moves all bits to the left by n positions. Every left shift usually multiplies the number by 2. More shifts mean a bigger value. New empty places on the right become 0.
Example 1 :
1010 << 1 = 10100
10 << 1 = 20
Example 2 :
0011 << 2 = 1100
3 << 2 = 12
Right Shift (>>)
Right Shift moves all bits to the right side one by one n times. Every right shift usually divides the number by 2 (integer / floor division). Bits on the right side are removed.
Example 1 :
1010 >> 1 = 0101
10 >> 1 = 5
Example 2 :
10100 >> 2 = 00101
20 >> 2 = 5
1 << x vs 1LL << x
When we write: 1 << x the value 1 is treated as an int. int usually stores up to 32 bits. So for very large shifts, the value can overflow and give wrong results.
But when we write: 1LL << x the 1LL becomes a long long. A long long can store up to 64 bits, so it is much safer for large shifts.
I directly use: 1LL << x to stay safe for large values.
MikeMirzayanov for the amazing Codeforces and Polygon platforms.
Maxwell Oliveira (Maxwell01) and Gustavo Leal (gustavoleal) for the on-site support;
Professor Daniel Porto (dporto) for the help in the contest organization and all other UnBalloon activities.
Most of the problems are aimed at those who are starting their journey in competitive programming. However, we also included a few problems we believe will be an interesting challenge for more experienced participants, such as finalists of ICPC Regionals.
Good luck to all participants!
Note: if you participated in the on-site contest, please don't make any comments regarding the problems in this blog. As soon as the Mirror finishes, we will publish an editorial blog — you may discuss the problems there.
Messege to anyone who disrespects this project` It’s easy to ignore hard work when you’ve never built anything yourself. If you think you're better, prove it or just stay quiet.
Компания Pinely предлагает грант 2500 usd за подготовку контеста для сборов. Уровень качества и сложности контеста должен быть не ниже уровня NEF, задачи должны быть разнообразными по теме и сложности.
До 10 июля необходимо прислать в pdf идеи задач (с ограничениями и краткими решениями) на contest.grant@pinely.com.
В заявке должно быть не меньше 9 задач + 2 запасных. Ваша заявка будет рассмотрена до 1 августа. Вас могут попросить заменить или доработать предложенные задачи. Если заявка и задачи согласованы, то до 20 августа необходимо будет подготовить в полигоне тесты, решения и окончательные условия задач на английском языке. На сборах команда должна будет провести разбор задач. По любым вопросам, касающимся грантов и подготовки контестов можно также писать на contest.grant@pinely.com