1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//zapiekanki.c by Jakub Janaszkiewicz

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main(void)
{
    size_t n, m;
    int i, j;
    long long suma, piecyk, temp, new_d;
    scanf("%zd %zd", &n, &m);
    long long czasy[n], wyniki[3 * n];
    for(i = 0; i < n; ++i) scanf("%lld", &czasy[i]);
    long long delty[n];
    delty[0] = czasy[0];
    for(i = 1; i < n; ++i) delty[i] = czasy[i] - czasy[i-1];
    for(i = 1; i < 3 * n; ++i) // iteracja po piecykach takich wyimaginowanych
    {
        suma = 0, temp = 0;
        for(j = 0; j < n; ++j) // iteracja po deltach
        {
            if (delty[j] - temp >= i) {temp = 0; continue;}
            else
            {
                temp = i - (delty[j] - temp);
            }
            suma += temp;
        }
        wyniki[i] = suma;
    }
    //iteracja po wlasciwych piecykach
    long long roznica;
    roznica = wyniki[3 * n - 1] - wyniki[3 * n - 2];
    for(i = 0; i < m; ++i)
    {
        scanf("%lld", &piecyk);
        if(piecyk < 3 * n)
        {
            printf("%lld\n", wyniki[piecyk]);
        }
        else
        {
            printf("%lld\n", wyniki[3 * n -1] + roznica * (piecyk - 3 * n));
        }
    }
    return 0;
}