Pagini recente » Cod sursa (job #672892) | Cod sursa (job #1462812) | Cod sursa (job #2793884) | Cod sursa (job #2135807) | Cod sursa (job #852343)
Cod sursa(job #852343)
#include<iostream>
#include<fstream>
#include<math.h>
using namespace std;
int main(){
long n,m,a[15001],b[15001],s=0;
int nr=1,i;
ifstream f("datorii.in");
ofstream g("datorii.out");
f>>n>>m;
int op, st, dr;
long sqr=sqrtl(n);
for(i=1;i<=n;i++){
f>>a[i];
if(nr<=sqr){
s=s+a[i];
if( i%sqr==0 && i>=sqr){
b[nr]=s;
nr++;
s=0;
}
}
}
for(int j=1;j<=m;j++){
f>>op>>st>>dr;
if(op==1){
long sum=0;
int l,r;
if(st%sqr==0)
l=st/sqr;
else
l=st/sqr+1;
if(dr<=sqr*(nr-1)){
if(dr%sqr==0)
r=dr/sqr;
else
r=dr/sqr+1;
}
else
r=nr-1;
for(i=l;i<=r;i++)
sum=sum+b[i];
if(dr>sqr*(nr-1))
for(i=sqr*(nr-1)+1;i<=n;i++)
sum=sum+a[i];
for(i=st-1;i>(l-1)*sqr;i--)
sum=sum-a[i];
for(i=dr+1;i<=dr*sqr;i++)
s=sum-a[i];
g<<sum<<endl;
}
if(op==0){
a[st]=a[st]-dr;
int t;
if(st<=sqr*(nr-1)){
if(st%sqr==0)
t=st/sqr;
else
t=st/sqr+1;
b[t]=b[t]-dr;
}
}
}
return 0;
}