差分
//差分思想 #include<cstdio> #include<cstring> #include<cstdlib> #include<iostream> #include<algorithm> #include<cmath> #include<queue> using namespace std; const int MAX=100010; int a[MAX],t[MAX]; void change(int x,int y,int v) { t[x]+=v; t[y+1]-=v; } int ASK(int x) { int ans=0; for(int i=1;i<=x;i++) { ans+=t[i]; } return ans; } int main() { int n; scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); t[i]=a[i]-a[i-1]; } int m; scanf("%d",&m); for(int i=1;i<=m;i++) { int x,y,z,p; scanf("%d",&x); if(x==1) { scanf("%d%d%d",&y,&z,&p); change(y,z,p); } else { scanf("%d",&y); cout<<ASK(y)<<endl; } } return 0; }