fbpx

Problema #1835 – twoop – Rezolvari PBInfo

de Mihai-Alexandru

Se dă un șir de N elemente, numere întregi. Pe acest șir se aplică operații de două tipuri :

  • Tip 1: st dr val – elementele de pe pozițiile din intervalul [st, dr] cresc cu valoarea val
  • Tip 2: poz – să se afișeze valoarea elementului de pe poziția poz .

    Exemplu

    twoop.in

    4 4 2
    5 0 -1 2
    1 2 -2
    2 3 10
    1 4 2
    2 3 3
    2
    3

    twoop.out

    13
    14

    Explicație

    5 0 -1 2 – șir initial
    3 -2 -1 2 – după operația 1
    3 8 9 2 – după operația 2
    5 10 11 4 – după operația 3
    5 13 14 4 – după operația 4

    #include <bits/stdc++.h>
    using namespace std;
    ifstream cin("twoop.in");
    ofstream cout("twoop.out");
    long long int a[100011] , v[100011];
    int main()
    {
        int n , nr1 , nr2 , st , dr , val , poz;
        cin >> n >> nr1 >> nr2;
        for(int i = 1 ; i <= n ; ++i)
            cin >> a[i];
        for(int i = 0 ; i < nr1 ; ++i)
        {
            cin >> st >> dr >> val;
            v[st] += val;
            v[dr + 1] -= val;
        }
        for(int i = 2 ; i <= n ; ++i)
            v[i] += v[i-1];
        for(int i = 1 ; i <= n ; ++i)
            a[i] += v[i];
        for(int i = 1 ; i <= nr2 ; ++i)
        {
            cin >> poz;
            cout << a[poz] << '\n';
        }
        return 0;
    }
    Comentarii

S-ar putea sa iti placa