Pagini recente » Cod sursa (job #1432945) | Cod sursa (job #2182760) | Cod sursa (job #1133981) | Cod sursa (job #224632) | Cod sursa (job #854784)
Cod sursa(job #854784)
#include <fstream>
#include <string.h>
#include <math.h>
#define MAXN 15001
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
inline int bk(int x) {return int(sqrt(x));}
int N,M,A[MAXN],buck[MAXN];
void pay(int T,int val) //achitat valoare V in ziua T
{
buck[bk(T)]-=val;
A[T]-=val;
}
int query(int P,int Q){
int sum=0,i;
while ((bk(P)!=bk(P+1))&&(P<N)) sum+=A[P++];
while ((bk(Q)!=bk(Q-1))&&(Q>1)) sum+=A[Q--];
for (i=bk(P);i<=bk(Q);i++)
sum+=buck[i];
return sum;
}
int main()
{
int i,a,b,op;
f>>N>>M;
for (i=1;i<=N;i++)
f>>A[i];
memset(buck,0,sizeof(buck));
for (i=1;i<=N;i++)
buck[bk(i)]+=A[i];
for (i=1;i<=M;i++){
f>>op>>a>>b;
switch (op)
{
case 0:
pay(a,b);
break;
case 1:
g<<query(a,b)<<"\n";
break;
}
}
return 0;
}