Cod sursa(job #284332)

Utilizator andreivFMI - vacaroiu andrei andreiv Data 21 martie 2009 17:21:20
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <stdio.h>
unsigned long int q,w,n,m,k,nr=0,s[150],i,j,x,y,z,ok1[150],ok2[150];

void platire()
{for (q=1;q<nr;q++)
	for (w=q+1;w<=nr;w++)
	if (ok1[q]>ok1[w]) {k=ok2[q];ok2[q]=ok2[w];ok2[w]=k;k=ok1[q];ok1[q]=ok1[w];ok1[w]=k;}
k=0;	
for (q=1;q<nr;q++)
{k+=ok2[q];	
 for (w=ok1[q];w<ok1[q+1];w++) s[w]=s[w]-k; 
}	
for (q=ok1[nr]+1;q<=n;q++) ok2[q]-=k;
}

int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%uld %uld",&n,&m);s[0]=0;
for (i=1;i<=n;i++) { scanf("%uld",&x);s[i]=s[i-1]+x; }
for (i=1;i<=m;i++) { scanf("%uld %uld %uld",&x,&y,&z); if(x==0) {nr+=1;ok1[nr]=y;ok2[nr]=z;} else {platire;printf("%uld \n",s[z]-s[y-1]);}}
return 0;}