Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int maxn=2e3+7;
- vector<int> a;
- vector<int> t(4*maxn);
- vector<int> add(4*maxn,0);
- void push(int v)
- {
- if(add[v])
- {
- add[v*2]+=add[v];
- add[v*2+1]+=add[v];
- add[v]=0;
- }
- }
- void build(int v,int tl,int tr)
- {
- if(tl==tr)
- {
- t[v]=a[tl];
- }
- else
- {
- int tm=(tl+tr)/2;
- build(v*2,tl,tm);
- build(v*2+1,tm+1,tr);
- }
- }
- int get(int v,int tl,int tr,int pos)
- {
- if(tl==tr)
- {
- t[v]+=add[v];
- add[v]=0;
- return t[v];
- }
- else
- {
- int tm=(tl+tr)/2;
- push(v);
- if(pos<=tm)
- {
- return get(v*2,tl,tm,pos);
- }
- else
- {
- return get(v*2+1,tm+1,tr,pos);
- }
- }
- }
- void Add(int v,int tl,int tr,int l,int r,int val)
- {
- if(l>r)
- {
- return;
- }
- if(tl==l && tr==r)
- {
- add[v]+=val;
- return;
- }
- else
- {
- int tm=(tl+tr)/2;
- Add(v*2,tl,tm,l,min(r,tm),val);
- Add(v*2+1,tm+1,tr,max(tm+1,l),r,val);
- }
- }
- void solve()
- {
- int n;
- cin >> n;
- a.resize(n);
- for(int i=0;i<n;i++)
- {
- cin >> a[i];
- }
- build(1,0,n-1);
- while(1)
- {
- int x;
- cin >> x;
- if(x==1)
- {
- int l,r,val;
- cin >> l >> r >> val;
- Add(1,0,n-1,l-1,r-1,val);
- // прибавление на отрезке
- }
- else
- {
- int pos;
- cin >> pos;
- // вывод элемента
- cout << get(1,0,n-1,pos-1)<<endl;
- }
- }
- }
- #define FILE "random"
- int main()
- {
- // freopen("input.txt","r",stdin);
- // freopen("output.txt","w",stdout);
- // freopen(FILE".in","r",stdin);
- // freopen(FILE".out","w",stdout);
- if(!debug)
- {
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- cout.tie(0);
- }
- int t=1;
- while(t--)
- solve();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement