profile
Размещено 4 года назад по предмету Информатика от k4dzrutnh8gvewe

Ёлка для енота
В стране енотов есть n городов, расположенных в ряд. Еноты любят гигантские ёлки, каждую из которых они устанавливают так, что она накрывает города с номерами в отрезке чётной длины от l до r включительно.

Ёлочным треугольником последовательности b1, ..., bk чётной длины назовём набор последовательностей Ti. Первая последовательность совпадает с данной (T1 = b1, ..., bk), а каждая из оставшихся получена удалением первого и последнего элемента из предыдущей (Ti = bi, ..., bk - i + 1). Например, ёлочный треугольник последовательности 1, 2, 3, 4, 5, 6 выглядит так:


Ёлкой последовательности c1, ..., ck чётной длины называется последовательность ёлочных треугольников последовательностей S1, ..., Sk/2, где Si = ci, ..., ck - i + 1. При этом центр каждого треугольника совпадает с центром ёлки. Например, ёлка последовательности 1, 2, 3, 4, 5, 6 выглядит так:


В каждом городе есть свой вид украшений: в i-м городе красота украшений равна ai. Когда еноты устанавливают гигантскую ёлку, накрывающую города с номерами в отрезке [l, r], то каждый город под этой ёлкой вешает свои украшения на все позиции в ёлке, под которыми этот город находится. Например, если накрыто шесть городов, то четвёртый накрытый город вешает украшения на все позиции, обозначенные четвёркой на рисунке выше.

Красота ёлки - сумма значений красоты каждого использованного украшения.

Вам даны значения красоты украшений, используемых в каждом городе, и описания k гигантских ёлок, которые ставили еноты. Енот Дмитрий хочет работать аналитиком, и в качестве тестового задания ему предложили упорядочить данный вам список из ёлок по возрастанию значений красоты. С сортировкой он справится и сам, а найти значения красоты каждой ёлки он попросил вас.

Поскольку красота ёлки может быть очень большой, достаточно найти её значение по модулю 998244353.

Формат входных данных
В первой строке задано число n (2 ≤ n ≤ 1000000) - число городов.

Во второй строке через пробел заданы n чисел a1, a2, ..., an (1 ≤ ai ≤ 109) - красота украшений, используемых в каждом из городов.

В третьей строке задано число k (1 ≤ k ≤ 1000000) - число ёлок.

В i-й из последующих k строк содержатся два числа l и r (1 ≤ l < r ≤ n) - номера первого и последнего городов, которые украшают ёлку с номером i. Гарантируется, что этот диапазон чётной длины, то есть (r - l + 1) делится на 2.

Формат результата
Необходимо вывести k строк, i-я из которых содержит суммарную красоту украшений на i-й ёлке по модулю 998244353.

  1. Ответ на вопрос
    Ответ на вопрос дан svy203

    Ответ:

    #include <bits/stdc++.h>

    using namespace std;

    int main(){

           ios_base::sync_with_stdio(0);

           cin.tie(0);cout.tie(0);

           int N,k;

           int a[1000000];

           map <pair <int, int>, int> mem;

           cin >> N;

           //b.reserve(N);

           memset(a,0,sizeof a);

           //memset(b,0,b.size()*sizeof int);

           for (int i=0;i<N;i++)

                   cin >> a[i];

           cin >> k;

           for (int i=0;i<k;i++){

           int tmp,tmp2,tmp3,tmp4,sum{0};

           cin >> tmp >> tmp2;

           tmp--;tmp2--;

           if (mem.find({tmp,tmp2})!=mem.end()) {cout<< mem[ {tmp,tmp2} ] << endl; continue;}

           tmp3=tmp;

           tmp4=tmp2;

           for(int x=0;x<(tmp4-tmp3)/2+1;x++){

           for(int z=0;z<(tmp2-tmp)/2+1;z++){

           if (mem.find({tmp,tmp2})!=mem.end()) {sum= (sum+mem[ {tmp,tmp2} ])%998244353; break;}

           for(int j=tmp+z;j<=tmp2-z;j++){

           sum=(sum+a[j])%998244353;

           }}

           tmp++;tmp2--;

           }

           cout << sum << endl;

           mem[{tmp3,tmp4}]=sum;

           }

           return 0;

    }

    Объяснение:

    1. Ответ на вопрос
      Ответ на вопрос дан svy203
      kotlin
Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 6 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.