// Foroni Marco, id090274 #include #include #define MAX_N 100000 int array[MAX_N+1]; int somma[MAX_N+1]; // somma[i] = sommatoria elementi array da 1 a i. int main(){ FILE *fin = fopen("input.txt", "r"); assert(fin); FILE *fout = fopen("output.txt", "w"); assert(fout); int N, Q; // Q = num query. fscanf(fin, "%d %d", &N, &Q); // Inizializzazione: int i; for (i = 1; i <= N; i++){ array[i] = 0; somma[i] = 0; } // Elaborazione query: for (i = 0; i < Q; i++){ int tipo; fscanf(fin, "%d", &tipo); if (tipo == 0){ // è query int start, end; fscanf(fin, "%d %d", &start, &end); int risp = somma[end] - somma[start-1]; // printf("query: (%d - %d) = %d.\n", start, end, risp); fprintf(fout, "%d ", risp); }else{ // è aggiornamento: int val = tipo; int pos; fscanf(fin, "%d", &pos); array[pos] += val; int k; for (k = pos; k <= N; k++) somma[k] += val; /* for (k = 0; k <= N; k++) printf("%d ", somma[k]); printf("\n"); */ } } fprintf(fout, "\n"); fclose(fin); fclose(fout); return (0); }