Задача взята с сайта e-olymp
Задача
Заданы длины $n$ отрезков. Какое наибольшее количество квадратов можно из них составить? Сторона каждого квадрата должна состоять только из одного отрезка.
Входные данные
В первой строке находится количество отрезков $n \left(1 \leqslant n\leqslant 10^6\right)$. Во второй строке заданы $n$ натуральных чисел — длины отрезков, числовые значения которых не превышают $100$.
Выходные данные
Вывести максимально возможное количество квадратов, которое можно составить из заданных отрезков.
Тесты
| # | ВХОДНЫЕ ДАННЫЕ | ВЫХОДНЫЕ ДАННЫЕ | 
| 1 | 9 2 2 4 2 3 2 1 2 4 | 1 | 
| 2 | 11 2 2 4 2 2 4 2 2 1 2 2 | 2 | 
| 3 | 5 8 9 8 9 11 | 0 | 
Код программы
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <iostream> #define MAX 101 using namespace std; int a[MAX]; int main() {     int n, l, res = 0, i;     cin >> n;     for(l = 0; l < n; l++) cin >> i, a[i]++;     for(i = 1; i <= MAX - 1; i++) res += a[i] / 4;     cout << res << "\n";     return 0; } | 
Решение
Пусть имеется $k$ отрезков одинаковой длины. Тогда из них можно составить $\frac{k}{4}$ квадрата. Длины отрезков изменяются от $1$  до $100$. Подсчитываем количество отрезков длины $i\left(1\leqslant i\leqslant 100\right)$ в массив $a\left[i\right]$. Тогда максимально возможное количество квадратов, которое можно составить из данных отрезков, равно $$\frac{a\left[1\right]+a\left[2\right]+\dots +a\left[100\right]}{4}.$$
Для этого совершим сортировку подсчетом. В ячейке 
			a[i] подсчитываем количество отрезков длины 
			i . В переменную 
			res  подсчитываем количество квадратов, которое можно построить.
Ссылки
Условие задачи на e-olymp
Код программы на ideone
Сортировка подсчетом на Wikipedia
 
						
На практике не очень правильно использовать магические числа, сейчас да у вас сказано что будут отрезки длины 100, но а вдруг поменяют и скажут длины 200, тогда надо будет в каждом месте в программе менять 100 на 200, а еще вдруг у вас пересекаются некоторые магические числа и тогда вообще не понятно что менять.
Так что мой совет в таких случаях использовать константы дабы потом не было путаницы
Спасибо, исправила