Cod sursa(job #1515635)

Utilizator waskaalphaAlexandru Iercosan waskaalpha Data 1 noiembrie 2015 22:27:48
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
// DatoriiInfoarena.cpp : Defines the entry point for the console application.
//

#include <stdio.h>
#include <stdlib.h>
typedef struct tag_OPERATION {
	bool type;
	long param1;
	long param2;
} OPERATION;

int main(int argc, char *argv[])
{
	long numOperations = 0;
	long numOrders = 0;
	long *lpOrder = NULL;
	OPERATION *lpOp = NULL;
	FILE *lpFile = fopen("datorii.in", "rt");
	fscanf(lpFile, "%ld %ld", &numOrders, &numOperations);
	lpOrder = new long[numOrders]; lpOp = new OPERATION[numOperations];
	for (int i = 0; i < numOrders; i++) {
		fscanf(lpFile, "%ld", &lpOrder[i]);
	}
	for (int i = 0; i < numOperations; i++) {
		int type = 0;
		fscanf(lpFile, "%ld %ld %ld", &type, &lpOp[i].param1, &lpOp[i].param2);
		lpOp[i].type = (bool)type;
	}
	fclose(lpFile); lpFile = fopen("datorii.out", "wt");
	for (int i = 0; i < numOperations; i++) {
		if (lpOp[i].type) {
			long sum = 0;
			for (int j = lpOp[i].param1 - 1; j <= lpOp[i].param2 - 1; j++) sum += lpOrder[j];
			fprintf(lpFile, "%ld\n", sum);
		} else {
			lpOrder[lpOp[i].param1 - 1] -= lpOp[i].param2;
		}
	}
	fclose(lpFile);
	delete[] lpOp;
	delete[] lpOrder;
    return 0;
}