Cod sursa(job #1225977)

Utilizator XiewRiklXiewRikl XiewRikl Data 4 septembrie 2014 11:20:03
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
/*
 * datorii.cpp
 *	http://www.infoarena.ro/problema/datorii
 *  Created on: 4 Sep 2014
 *      Author: XiewRikl
 */
#include<stdio.h>

const unsigned int N = 15001;
unsigned long int A[N];




void processQuerry(short unsigned int ident,unsigned int x,unsigned int y,unsigned int length,FILE *fout){
	if(ident == 0){			//Processing a modification operation
		for(unsigned int i=x;i<=length;++i)
			A[i]-=y;
		//printf("\nA[]= ");
		//for(unsigned int i=1;i<=length;++i)
		//	printf("%lu ",A[i]);
		return;
	}
	//Processing a request (Assuming ident is 1, BAD behaviour, but fast)
	fprintf(fout,"%lu\n",(A[y]-A[x-1]));

}


int main(void){
	FILE *fin,*fout;
	fin = fopen("datorii.in","r");
	fout = fopen("datorii.out","w");
	unsigned int length;
	unsigned long nr_op,temp;
	fscanf(fin,"%u %lu",&length,&nr_op);
	//printf("\nA[]= ");
	for(unsigned int i=1;i<=length;++i){
		fscanf(fin,"%lu",&temp);
		A[i]=A[i-1]+temp;
		//printf("%lu ",A[i]);
	}
	short unsigned int ident;
	unsigned int x,y;
	for(unsigned long i=1;i<=nr_op;++i){
		fscanf(fin,"%hu %u %u",&ident,&x,&y);
		processQuerry(ident,x,y,length,fout);
	}
	fclose(fin);
	fclose(fout);
	return(0);
}