Cod sursa(job #514837)

Utilizator GodiesVlad Voicu Godies Data 19 decembrie 2010 18:02:01
Problema Arbori indexati binar Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <cstdlib>
#include <cstdio>
#include <iostream>

#define maxn 100000
#define maxm 150000

using namespace std;

int v[maxn];

int main()
{
	int n, m, i, cod, s, value1, value2, j;
	FILE *f = fopen("aib.in", "rt");
	FILE *g = fopen("aib.out", "wt");
	fscanf(f, "%d" , &n);
	fscanf(f, "%d" , &m);
	for (i = 0; i < n; i++) {
		fscanf(f, "%d" , &v[i]);
	}
	for (j = 0; j < m; j++) {
		fscanf(f, "%d" , &cod);
		if (cod == 0) {
			fscanf(f, "%d", &value1);
			fscanf(f, "%d", &value2);
			v[value1-1] += value2;
		}
		if (cod == 1) {    
			fscanf(f, "%d", &value1);
			fscanf(f, "%d", &value2); 
			s = 0;
			for (i = value1 - 1; i < value2; i++) {
				s += v[i];
			}
			fprintf(g, "%d\n" , s);
		}
		if (cod == 2) {
			fscanf(f, "%d" , &value1);
			s = 0;
			for (i = 0; i < n; i++) {
				s += v[i];
				if (s == value1) {
					fprintf(g, "%d\n" , i + 1);
					break;
				}
				if (s > value1) {
					fprintf(g, "%d\n" , -1);
					break;
				}
			}
		}

	}
	fclose(f);
	fclose(g);
	return 0;
}