Решение задачи Страницы с Codeforces

Без пояснения   Просмотров: 27


Пользователь ainta занимается созданием веб-сайта. Сегодня он разрабатывает навигацию по страницам сайта. Сайт ainta состоит из n страниц, пронумерованных целыми числами от 1 до n. Предположим, что сейчас посетитель сайта находится на p-ой странице, тогда навигация будет выглядеть следующим образом:

<< p - k p - k + 1 ... p - 1 (p) p + 1 ... p + k - 1 p + k >>
Когда посетитель кликает кнопку "<<", он переходит на страницу 1; когда посетитель кликает кнопку ">>", он переходит на страницу n. Если посетитель кликает некоторое число, он переходит на соответствующую страницу.

Чтобы навигация по сайту выглядела более презентабельно, требуется, чтобы выполнялись условия:

Если страница номер 1 отображается в навигации, то кнопку "<<" отображать не надо.
Если страница номер n отображается в навигации, то кнопку ">>" отображать не надо.
Если номер страницы меньше 1 или больше n, ее в навигации отображать не надо.

Вам заданы числа n, k, p. Помогите ainta, напишите программу, которая выведет строку навигации по заданным параметрам. Обратите внимание на тестовые примеры для лучшего понимания условия.

Код

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n, p, k;
    cin >> n >> p >> k;
    if(p - k > 1)
        cout << "<<" << " ";
    for(int i = p - k; i < p; ++i){
        if(i > 0)
            cout << i << " ";
    }
    cout << "(" << p << ")" << " ";
    for(int i = p + 1; i <= p + k; ++i){
        if(i <= n)
            cout << i << " ";
    }
    if(p + k < n)
        cout << ">>";
    return 0;
}

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться