Cod sursa(job #1600735)

Utilizator mateinMatei Nistor Ionut matein Data 15 februarie 2016 12:49:49
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;
vector<int> datorii;
int main()
{

    int n,m,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);
    datorii = vector<int>(n+1);
    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;
}