Ограничение по времени: 1 секунда
Ограничение по памяти: 256 мегабайт
Школьный этап всемарсианской олимпиады по информатике проводится на лучшей тестирующей системе. Однако участникам неизвестно, как устроена система внутри. И вам как лучшему в галактике специалисту предстоит в этом разобраться.
Тестирующая система располагается на n(n+1)2+1 серверах, пронумерованных целыми числами от 1 до n(n+1)2+1. Серверы связаны друг с другом в сеть таким способом, как показано на изображении ниже. Прямоугольниками обозначены серверы, для каждого сервера указан его номер. Линиями указаны кабели, соединяющие серверы.
|---------------| |----------------| |----------------| |----------------|
| 1 | | 2 | | 3 | | 4 |
|---------------| |--- /---| |--- /--| |------- |
| 5 | | ------/ | | -------/ | | -------|
|---------------| |----------------| |----------------| |----------------|
...
|---------------| |----------------| |----------------| |----------------|
| (n+1)^2-2 | | (n+1)^2-1 | | (n+1)^2 | | (n+1)^2+1 |
|---------------| |----------------| |----------------| |----------------|
Так как мы имеем дело с прямоугольным массивом серверов, можно заметить, что каждый сервер имеет 4 соседа - верхнего, нижнего, левого и правого.
верхний
/|
|
левый-+-правый
|
|/
нижний
Также на этом изображении видно, что каждый сервер находится в одной из четырех групп: угловые серверы, крайние серверы, серверы внутреннего квадрата и особый сервер.
- Угловые серверы: 1, (n+1)^2, (n+1)^2-2n, (n+1)^2-2.
- Крайние серверы: (n+1), 2(n+1), ..., (n+1)^2-1.
- Серверы внутреннего квадрата: все остальные серверы.
- Особый сервер: (n+1)^2+1.
Теперь, когда мы знаем, как устроены серверы и какие у них есть соседи, давайте рассмотрим две ситуации - когда n равно четному числу и когда n равно нечетному числу.
### Случай, когда n - четное число
Если n - четное число, то посмотрим на расположение крайних серверов. Мы видим, что все крайние серверы имеют ровно одного соседа, так как с одной стороны у них нет серверов.
|-----------------| |-----------------| |-----------------| |-----------------|
| 1 | | 2 | | 3 | | 4 |
|-----------------| |-----------------| |-----------------| |-----------------|
... ...
|-----------------| |-----------------| |-----------------| |-----------------|
| (n+1) | | 2(n+1) | | (n-1)(n+1) | | n(n+1) |
|-----------------| |-----------------| |-----------------| |-----------------|
Теперь перейдем к внутренним серверам. Посмотрим на одну из сторон внутреннего квадрата размером (n-2) x (n-2). Мы видим, что в каждой стороне внутреннего квадрата есть по n-2 сервера.
|-----------------| |-----------------| |-----------------|
| | | | | |
| | | | | |
| | | | | |
| (n+1) | | 2(n+1) | | (n-1)(n+1) |
| | | | | |
| | | | | |
| | | | | |
|-----------------| |-----------------| |-----------------|
... ...
|-----------------| |-----------------| |-----------------|
| 3(n+1)-2n-1 | | 3(n+1)-2n | | 3(n+1)-3n+2 |
|-----------------| |-----------------| |-----------------|
Отсюда мы можем сделать следующее наблюдение:
1. Количество серверов внутреннего квадрата будет равно (n-2) x (n-2).
2. Крайний левый сервер внутреннего квадрата будет равен (n+1)^2-2(n-2)-n+1 = n^2-3n+2+1 = n(n-2)+2+1.
3. Крайний верхний сервер внутреннего квадрата будет равен (n+1)^2-3(n-2) = n^2-3n+3+1 = n(n-2)+3+1.
Теперь мы знаем, что угловые серверы, крайние серверы и серверы внутреннего квадрата можно выразить через число n.
### Случай, когда n - нечетное число
Если n - нечетное число, то посмотрим на расположение крайних серверов. Мы видим, что все крайние серверы имеют ровно одного соседа, так как с одной стороны у них нет серверов.
|------------------| |------------------| |------------------| |------------------| |----------------------------------------------------------------------|
| 1 | | 2 | | 3 | | 4 | | |
|------------------| |------------------| |------------------| |------------------| | |
... ... ... ...
|------------------| |------------------| |------------------| |------------------| |----------------------------------------------------------------------|
| (n+1) | | (n+1)^2-3n-2 | | (n+1)^2-2n-1 | | (n+1)^2-2n | | |
|------------------| |------------------| |------------------| |------------------| | Квадрат [n+1]*(n+1) |
...
Квадрат [n+1]*[n+1]
...
|------------------| |------------------| |------------------| |------------------| | |
| (n+1)*(n+1)-2n | | (n+1)*(n+1)-2n+1| | (n+1)*(n+1)-2 | | (n+1)*(n+1) | | |
|------------------| |------------------| |------------------| |------------------| |----------------------------------------------------------------------|
Тогда отсюда мы можем сделать следующее наблюдение:
1. Количество серверов внутреннего квадрата будет равно n x n.
2. Крайний левый сервер внутреннего квадрата будет равен (n+1)^2-2n+1 = n^2+2n+1 = (n+1)^2.
3. Крайний верхний сервер внутреннего квадрата будет равен (n+1)^2-2n-n = n^2+n+1 = (n+1)^2-n.
Теперь мы знаем, что угловые серверы, крайние серверы и серверы внутреннего квадрата можно выразить через число n.
### Алгоритм
Итак, у нас есть два случая - когда n - четное число и когда n - нечетное число.
1. Если n - четное число, то:
- Угловые серверы: 1, (n+1)^2, (n+1)^2-2n, (n+1)^2-2.
- Крайние серверы: (n+1), 2(n+1), ..., (n+1)^2-1.
- Серверы внутреннего квадрата: все остальные серверы.
- Особый сервер: (n+1)^2+1.
2. Если n - нечетное число, то:
- Угловые серверы: 1, (n+1)^2, (n+1)^2-n, (n+1)^2-2n.
- Крайние серверы: (n+1), (n+1)^2-2n, (n+1)^2-2n+1, (n+1)^2-2.
- Серверы внутреннего квадрата: все остальные серверы.
- Особый сервер: (n+1)^2+1.
С учетом всех этих наблюдений мы получили алгоритм решения задачи:
1. Считать число n.
2. Проверить, является ли n четным или нечетным.
3. Если n - четное число, то:
- Проверить номер сервера:
- Если номер сервера равен 1, (n+1)^2, (n+1)^2-2n или (n+1)^2-2, вывести "corner".
- Если номер сервера равен (n+1), 2(n+1), ..., (n+1)^2-1, вывести "edge".
- Если номер сервера равен (n+1)^2+1, вывести "extra".
- В противном случае, вывести "inside".
4. Если n - нечетное число, то:
- Проверить номер сервера:
- Если номер сервера равен 1, (n+1)^2, (n+1)^2-n или (n+1)^2-2n, вывести "corner".
- Если номер сервера равен (n+1), (n+1)^2-2n, (n+1)^2-2n+1 или (n+1)^2-2, вывести "edge".
- Если номер сервера равен (n+1)^2+1, вывести "extra".
- В противном случае, вывести "inside".
### Реализация
#include <iostream>
int main() {
int n;
std::cin >> n;
if (n % 2 == 0) {
int num;
std::cin >> num;
if (num == 1 || num == (n+1)*(n+1) || num == (n+1)*(n+1)-2*n || num == (n+1)*(n+1)-2) {
std::cout << "cornern";
} else if (num >= (n+1) && num <= (n+1)*(n+1)-1) {
std::cout << "edgen";
} else if (num == (n+1)*(n+1)+1) {
std::cout << "extran";
} else {
std::cout << "insiden";
}
} else {
int num;
std::cin >> num;
if (num == 1 || num == (n+1)*(n+1) || num == (n+1)*(n+1)-n || num == (n+1)*(n+1)-2*n) {
std::cout << "cornern";
} else if (num == (n+1) || num == (n+1)*(n+1)-2*n || num == (n+1)*(n+1)-2*n+1 || num == (n+1)*(n+1)-2) {
std::cout << "edgen";
} else if (num == (n+1)*(n+1)+1) {
std::cout << "extran";
} else {
std::cout << "insiden";
}
}
return 0;
}
### Тестовые примеры
*Тест 1*
Входные данные:
2
2
Выходные данные:
extra
*Тест 2*
Входные данные:
3
10
Выходные данные:
inside
*Тест 3*
```
Входные данные:
4
15Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет