Cod sursa(job #307136)

Utilizator GulosSerban Petrescu Gulos Data 23 aprilie 2009 10:54:08
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<iostream>
#include<fstream>

using namespace std;

int main(){
	ifstream fin("datorii.in");
	ofstream fout("datorii.out");
	int m,n,A[1501],v[1501],s1,s2,O[3],x;
	fin>>n>>m;
	int i,j;
	for (i=1;i<=n;i++){
		fin>>A[i];
		x=(i^(i-1))&i;
		v[i]=0;
		for (j=0;j<x;j++)
			v[i]+=A[i-j];
	}
	for (i=0;i<m;i++){
		fin>>O[0]>>O[1]>>O[2];
		if (O[0]){
			s1=0;
			s2=0;
			while (O[2]>0){
				s1+=v[O[2]];
				x=(O[2]^(O[2]-1))&O[2];
				O[2]-=x;
			}
			x=0;
			O[1]--;
			while (O[1]>0){
				O[1]-=x;
				s2+=v[O[1]];
				x=(O[1]^(O[1]-1))&O[1];
			}
			fout<<s1-s2<<'\n';
		}
		else{
			while (O[1]<=n){
				v[O[1]]-=O[2];
				x=(O[1]^(O[1]-1))&O[1];
				O[1]+=x;
			}
		}
	}
}