Блог пользователя simplemind

Автор simplemind, история, 5 недель назад, По-английски

As you would expect, the USAAIO Guide has just come out. It was published this month. Correct me if I am wrong, but the first messages in the Discord server appeared only about a week ago, so I believe the guide was released this month.

I don't think there is much to say yet, since it seems to have the same structure as the USAMO Guide and the USACO Guide. I say “seems” because it is not fully published yet. The creators are still working on the modules, so for now the only thing you will see when entering the USAAIO Guide is an invitation to join the waitlist.

Disclaimer: when writing this blog, I did not know there was already a USABO Guide, but it seems to have been created a long time ago, since the copyright dates back to 2024. However, there are already other guides if you visit Pandorax. As you can see, there is a USAAAO Guide, a USESO Guide, and the previously mentioned USABO Guide. But I think these ones have a different structure from the USACO, USAMO, or USAAIO guides.

It is interesting to see how the USACO Guide has grown into something much bigger than just a competitive programming resource. What started as a guide for programming has inspired similar projects for mathematics, and now even artificial intelligence. I would not be surprised if more olympiads follow the same path in the future.

Personally, I think this is a great direction for the olympiad community. Having everything organized in one place makes it much easier for beginners to know where to start and for more experienced students to find good practice material without jumping between dozens of websites. If these guides keep expanding, preparing for olympiads will become much more accessible than it was just a few years ago.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +8
  • Проголосовать: не нравится

Автор simplemind, история, 2 месяца назад, По-английски

In my previous blog, I mentioned we probably (with hope) end with platforms like Mathforces. Not long after the blog, a guy shared SolveFire with me that is basically "Codeforces, but for math".

So today, I want to introduce this "Mathforces" and here it is:

The UI is super clean and modern. It obviously has both light and dark modes, which you can toggle by clicking the little "orz" guy in the top right next to your notifications. Did I really need to mention that? Yes, because orz.

Like any good Mathforces, it revolves around contests. Looking at the archives, the oldest contest dates back to February, so the platform probably launched in late 2025 or early 2026. They host weekly rounds featuring Bronze, Silver, and Gold divisions, and sometimes even Platinum and Diamond.

You can create your own community contests, and of course, upsolve problems you missed after the official round ends. The problems themselves are split into two types: answer-only and proof-based.

  • Answer-only: You just type in the correct answer and it gets judged automatically.

  • Proofs: You have to upload a document containing your proof. I'm not entirely sure who grades these, I'm guessing it's a mix of the problem authors and AI.

The contests are fully rated with a leaderboard, exactly as you'd expect. Another nice touch is that SolveFire separates the community chat from the blogs. This is a great feature for avoiding the spammy blog posts we sometimes see on CF (though to be fair, SolveFire doesn't have a massive amount of blogs just yet).

You can join the Discord server here.

I am going to reuse my words from my other blog cause I am lazy "Right now, there are very few active users since it is a brand-new platform. But I honestly believe it is going to grow to be just as big as the Codeforces. I think it will be a really great resource, not only for Math Olympiad, but also for CPers, since it really helps to build a solid math background and sharpen our logical reasoning..."

I highly recommend giving it a try, it's a great way to level up your logical thinking or just have fun(again)!

Полный текст и комментарии »

  • Проголосовать: нравится
  • +11
  • Проголосовать: не нравится

Автор simplemind, история, 3 месяца назад, По-английски

Yeah, it’s not a typo, I am not referring to the USACO Guide. So, the USAMO Guide came out before GTA 6!

I was shocked when I found it yesterday. I am not entirely sure when it was published, but I am fairly certain it was created recently. I actually discovered it last night thanks to an Instagram Reel. It has basically the exact same structure as the USACO Guide, but instead of USACO Bronze, Silver, Gold, and Platinum, it covers the AMC 8, AMC 10/12, AIME, and USA(J)MO.

What is even more surprising is that there is a USAMO Guide contest page. Since when do math problems have ratings, and since when do you "submit" a math problem?

Right now, there are very few active users since it is a brand-new platform. But I honestly believe it is going to grow to be just as big as the USACO Guide. I think it will be a really great resource, not only for Math Olympiad, but also for CPers, since it really helps to build a solid math background and sharpen our logical reasoning...

Just a funny thought (or maybe one day it will become reality?): By that same logic, we're gonna end up with a USAPhO Guide, USAChO Guide, USABO Guide, USAAIO Guide...

Or probably even platforms like Mathforces, AtMath, LeetMath, and MathChef...

Полный текст и комментарии »

  • Проголосовать: нравится
  • +134
  • Проголосовать: не нравится

Автор simplemind, история, 20 месяцев назад, По-английски

I found a new way to sort an array by using the bits(this only works for the languages that accept the use of bit). The idea is following:

Let's suppose that there are only 32_bit non-negative integers in our array. First we check the bit on position 30(not 31 since the bit 31 indicates whether the element is positive or not) for all elements in our array, if it is 0 then we push it back to an array called left, otherwise to array right. It is obvious that all elements in array left are smaller than any element in array right. So we only have to sort the array left and right separately and then just unite this two arrays and we get our original array sorted. In order to sort the array left, we do the same process but with one bit less(it is the same for the array right),i.e. with bit 29. Doing this process until we get to the bit on position 0 and we are done.

If you want to work with 64_bit integer you just have to change the initial position to 62 of the bits.

The code here:

void bitsort(vector<int>&a,int pos,int size){
	//Our base case:
	//When the size of this array is 1 or 0, then we don't have to sort it since it is already sorted.
	//When the position=-1, then we don't have to sort it since theres no position -1.
	if(size<2 || pos==-1){
		return;
	}
	//x=size of array left and y=size of array right
	int x=0,y=0;
	vector<int> left,right;
	for(int i=0;i<size;i++){
		//Checking if the bit on position pos is 1 or 0
		if(a[i]&(1<<pos)){
			right.push_back(a[i]);
			y++;
			}else{
			left.push_back(a[i]);
			x++;
		}
	}
	//sorting left and right independently
	bitsort(left,pos-1,x);
	bitsort(right,pos-1,y);
	//Joining these two arrays
	for(int i=0;i<x;i++){
		a[i]=left[i];
	}
	for(int i=0;i<y;i++){
		a[i+x]=right[i];
	}
	//So we have done
	return;
}
vector<int> sortArray(vector<int>& nums) {
	int n=nums.size();
	//Calling the function
	bitsort(nums,30,nums.size());
	return nums;
}

If we have negative numbers in our array, we have to do the same but creating an array for negative numbers and other for non-negative numbers. sorting them seperately and joining them we get our sorted array. The code:

//The bitsort function is the same
vector<int> sortArray(vector<int>& nums) {
	int n=nums.size();
	int x=0,y=0;
	vector<int> nega,posi;
        for(int i=0;i<n;i++){
		if(nums[i]<0){
			nega.push_back(nums[i]);
			x++;
		}else{
			posi.push_back(nums[i]);
			y++;
		}
	}
	bitsort(nega,30,x);
	bitsort(posi,30,y);
	for(int i=0;i<x;i++){
		nums[i]=nega[i];
	}
	for(int i=0;i<y;i++){
		nums[i+x]=posi[i];
	}
	return nums;
}

It works in approximately O(32n) or O(64n) depending on the elements we are working on(I don't write O(32n) as O(n) since it is approximately O(nlogn) and O(nlogn)!=O(n)).

I don't know if this sort is already posted somewhere, my friends told me that it is like radixsort. But as it is working with bits so I call it BitSort.

Полный текст и комментарии »

  • Проголосовать: нравится
  • -16
  • Проголосовать: не нравится