227
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 valoareaval
- Tip 2:
poz
– să se afișeze valoarea elementului de pe pozițiapoz
.
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