Cod sursa(job #1234598)

Utilizator yololy97Olaru Bogdan-Ioan yololy97 Data 27 septembrie 2014 17:22:53
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <cstdio>
#include <cmath>
using namespace std;
int n, m, x, y, z, a, s[125], v[15001], k = 1;
void solve1(){
	int t = y / a, p = z / a, sum = 0;
	for(int i = t + 1; i <= p; ++i){
		sum += s[i];
	}
	if(z % a)
		for(int i = p * a + 1; i <= z; ++i)
			sum += v[i];
	if(y % a == 0)
		sum += v[t * a];
	else
		for(int i  = t * a + 1; i < y; ++i)
			sum -= v[i];
	printf("%d\n", sum);
}
void solve2(){
	int t = y / a;
	if(y % a)
		++t;
	s[t] -= z;
}
void read(){
	scanf("%d %d ", &n, &m);
	for(int i = 1; i <= n; ++i)
		scanf("%d ", &v[i]);
	a = sqrt(n);
	for(int i = 1; i <= n; ++i){
		s[k] += v[i];
		if(i % a == 0)
			++k;
	}
	if(n % a == 0) --k;
	for(int i = 1; i <= m; ++i){
		scanf("%d %d %d ", &x, &y, &z);
		if(x)
			solve1();
		else
			solve2();
	}
}
int main(){
	freopen("datorii.in", "r", stdin);
	freopen("datorii.out", "w", stdout);
	read();
}