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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include <bits/stdc++.h>
#define FOR(i, a, n) for(int i = a; i < n; i++)

#ifdef _WIN32
#define getchar_unlocked getchar
#define putchar_unlocked putchar
#endif // _WIN32

using namespace std;

long long klienci[200000];
int czasyPiekarnikow[200000];


int liczbaKlientow, liczbaPiekarnikow;

inline void readUI(int *n) //tylko dodatnie
{
    register char c = 0;
    while (c < 33) c=getchar_unlocked();
    (*n) = 0;
    while (c>32) {(*n)=(*n)*10LL + (c-48); c=getchar_unlocked();}
}

inline void readULL(long long *n) //tylko dodatnie
{
    register char c = 0;
    while (c < 33) c=getchar_unlocked();
    (*n) = 0;
    while (c>32) {(*n)=(*n)*10LL + (c-48); c=getchar_unlocked();}
}
inline void putULL(long long n)
{

     if(n==0) //ten przypadek rozpatrujemy oddzielnie
     {
       putchar_unlocked(48); //wypisz 0
       return; //zakoñcz wypisywanie
     }

   char tab[15];//tablica bêdzie przechowywaæ cyfry
     int p = 0;
     while(n != 0) { //wy³uskanie kolejnych cyfr z liczby n
        tab[p++] = (n % 10) + 48;
         n /= 10;
     }
     while(p--)
         putchar_unlocked(tab[p]); //wypisanie liczby
}


inline long long policzPiekarniki()
{
    FOR(j, 0, liczbaPiekarnikow)
    {
        long long gdzieSkaczono = 0;
        long long suma = 0;
        FOR(i, 0, liczbaKlientow)
        {
            gdzieSkaczono += czasyPiekarnikow[j];
            if(klienci[i] >= gdzieSkaczono)
            {
                gdzieSkaczono = klienci[i];
            }
            else
            {
                suma += gdzieSkaczono - klienci[i]; /// dodaje czas czekania
            }
        }
        putULL(suma);
        putchar_unlocked('\n');
    }
}
int main()
{
    ios::sync_with_stdio(0);
    readUI(&liczbaKlientow);
    readUI(&liczbaPiekarnikow);
    FOR(i, 0, liczbaKlientow)
    {
        readULL(&klienci[i]);
    }
    FOR(i, 0, liczbaPiekarnikow)
    {
        readUI(&czasyPiekarnikow[i]);
    }

    policzPiekarniki();

    return 0;
}