Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
44569 alex_liu 课堂检测 C++ 通过 100 64 MS 1820 KB 938 2022-02-09 10:29:59

Tests(23/23):


#include<bits/stdc++.h> using namespace std; const int MAXN=100007; long long a[MAXN],bl[MAXN],a_flag[MAXN],n,m,blo,opt; long long min(long long a,long long b){ if(a>b)return b; else return a; } void add(int l,int r,int z){ for(int i=l;i<=min(r,bl[l]*blo);i++)a[i]+=z; if(bl[l]!=bl[r]){ for(int i=(bl[r]-1)*blo+1;i<=r;i++)a[i]+=z; } for(int i=bl[l]+1;i<=bl[r]-1;i++)a_flag[i]+=z; } int main(){ scanf("%d",&n); blo=(int)sqrt(n); for(int i=1;i<=n;i++){ scanf("%lld",&a[i]); bl[i]=(i-1)/blo+1; } scanf("%d",&m); int l,r,c; for (int i=1;i<=m;i++){ scanf("%d",&opt); if(opt==1){ scanf("%d%d%d",&l,&r,&c); add(l,r,c); } else{ scanf("%d",&l); long long ans=a[l]+a_flag[bl[l]]; printf("%lld\n",ans); } } return 0; }


测评信息: