Cod sursa(job #344580)

Utilizator vladiiIonescu Vlad vladii Data 30 august 2009 17:18:14
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <stdio.h>
using namespace std;
int main() {
    int n, m, p[15000],k=0, s[15000], i, j, x, y, z, f, t, s1, s2;
    FILE *f1 = fopen("datorii.in", "r");
	FILE *f2 = fopen("datorii.out", "w");
    fscanf(f1, "%d%d", &n, &m);
    p[0]=0;
    for(i=1; i<=n; i++) {
             fscanf(f1, "%d", &j);
             p[i]=p[i-1]+j;
    }
    for(i=1;i<=n;i++) {
             s[i]=p[i]-p[i-((i^(i-1))&i)];
    }
    for(i=1; i<=m; i++) {
             fscanf(f1, "%d%d%d", &x, &y, &z);
             if(x==0) {
                       f=y;
                       while(f<=n){
	                        s[f]-=z;
                         	f+=(f^(f-1))&f;
                      }
             }
             else {
                  f=y-1;
                  s1=0;s2=0;
                   while(f){
	               s1+=s[f];
                	f-=(f^(f-1))&f;
                   }
                     f=z;
                      while(f){
	                  s2+=s[f];
                   	f-=(f^(f-1))&f;
                      }
                  fprintf(f2, "%d\n", s2-s1);
             }
    }
	fclose(f1);
	fclose(f2);
    return 0;
}