Pagini recente » Cod sursa (job #55447) | Cod sursa (job #2999398) | Cod sursa (job #3162263)
#include<fstream>
using namespace std;
ifstream F("datorii.in");
ofstream G("datorii.out");
int m,s,t[15001];
short n,x,y,k,l;
bool c;
char e[4096],p[4110];
int B()
{
int r=0;
while(e[k]<'0'||e[k]>'9')
if(++k==4096)
F.read(e,4096),k=0;
for(;'0'<=e[k]&&e[k]<='9';) {
r=(r<<1)+(r<<3)+e[k]-'0';
if(++k==4096)
F.read(e,4096),k=0;
}
return r;
}
void S(int x)
{
int i,d=x>=1e9?10:x>=1e8?9:x>=1e7?8:x>=1e6?7:x>=1e5?6:x>=1e4?5:x>=1e3?4:x>=1e2?3:x>9?2:1;
for(i=d-1;i>=0;x/=10,--i)
p[l+i]=x%10+48;
p[l+d]=10,l+=d+1;
if(l>=4096)
G.write(p,l),l=0;
}
int main()
{
for(n=B(),m=B(),y=1;y<=n;++y)
for(x=B(),s=y;s<=n;t[s]+=x,s+=(s&-s));
while(m--) {
c=B(),x=B(),y=B();
if(c) {
for(s=0;y;s+=t[y],y-=(y&-y));
for(--x;x;s-=t[x],x-=(x&-x));
S(s);
} else
for(;x<=n;t[x]-=y,x+=(x&-x));
}
G.write(p,l);
return 0;
}