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
#include <iostream>

using namespace std;

int main()
{
    long long m,n;
    cin>>n>>m;
    long long trawa[n];
    for(int i=0;i<n;i++) trawa[i]=0;
    long long gatunek[n];
    long long dzien[m];
    long long koszenie[m];
    for(long long i=0;i<n;i++)
        cin>>gatunek[i];
    for(long long i=0;i<m;i++)
        cin>>dzien[i]>>koszenie[i];


    //kosimy trawe :-)
    long long k=0;  //k-te koszenie do wykonania (k-1 -wsze wykonano)
    for(long long i=1;i<=dzien[m-1];i++) //od pierwszego do ostatniego dnia
    {
        //wzrost
        for(long long j=0;j<n;j++)
            trawa[j]+=gatunek[j];
        //ewentualne koszenie
        if(i==dzien[k])
        {
            long long skoszono=0;
            for(long long j=0;j<n;j++)
                if(trawa[j]>koszenie[k])
                {
                    skoszono+=trawa[j]-koszenie[k];
                    trawa[j]=koszenie[k];
                }

            cout<<skoszono<<endl;
            if(k==(m-1)) break;//ostatni dzien
            else k++;
        }
    }

    return 0;
}