Cod sursa(job #1600713)

Utilizator mateinMatei Nistor Ionut matein Data 15 februarie 2016 12:37:26
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <iostream>
#include <stdio.h>
using namespace std;

int main()
{
    int n,m,datorii[15000],t,v,q,p,tip,s,aux;
    FILE *iFile,*oFile;
    iFile = fopen("datorii.in","r");

    oFile = fopen("datorii.out","w");
    fscanf(iFile,"%d",&n);
    fscanf(iFile,"%d",&m);
    for(int i=1;i<=n;i++) {
        fscanf(iFile,"%d",&aux);
        for ( int j = i; j<=n ; j += j & (-j) )
            datorii[j] += aux;
    }

    for(int i=1;i<=n;i++) {
        cout<<datorii[i]<<' ';
    }

    for(int i=0;i<m;i++) {

        fscanf(iFile,"%d",&tip);
        if(tip == 0) {
            fscanf(iFile,"%d",&t);
            fscanf(iFile,"%d",&v);
            for( int j = t ; j<=n ; j += j & (-j) )
                datorii[j] -= v;
        } else {
            s = 0;
            fscanf(iFile,"%d",&p);
            fscanf(iFile,"%d",&q);
            for(int j = p-1 ; j ; j-=j & (-j) )
                s = s - datorii[j];
            for(int j = q ; j ; j-=j & (-j) )
                s = s + datorii[j];
            fprintf(oFile,"%d\n", s);
        }

    }

    fclose(iFile);
    fclose(oFile);
    return 0;
}