Cod sursa(job #852904)

Utilizator danieladDianu Daniela danielad Data 11 ianuarie 2013 21:42:41
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<iostream>
#include<fstream>
#include<math.h>
using namespace std;
int main(){
	int n,m,a[15001],b[15001],s=0;
	int nr=0,i;
	ifstream f("datorii.in");
	ofstream g("datorii.out");
	f>>n>>m;
	int op, st, dr,t,v;
	int sqr;
	sqr=(int)sqrt(double(n));
	for(i=0;i<n;i++){
		f>>a[i];
		s=s+a[i];
		if((i+1)%sqr==0||(i+1)==n){
			b[nr]=s;
			nr++;
			s=0;
		}
	}
	for(int j=1;j<=m;j++){
		f>>op>>st>>dr;
		if(op==1){
			st--;
			dr--;
			int sum=0;
			for(i=st/sqr;i<=dr/sqr;i++)
				sum=sum+b[i];
			for(i=st-1;i>=(st/sqr)*sqr;i--)
				sum=sum-a[i];
			for(i=dr+1;i<((dr/sqr)+1)*sqr;i++)
				sum=sum-a[i];
			g<<sum<<'\n';
		}
		else
			if(op==0){
				st--;
				int t=st/sqr;
				a[st]=a[st]-dr;
				b[t]=b[t]-dr;
			}
	}
	return 0;
}