Cod sursa(job #2590257)

Utilizator benisavuSavu Beniamin benisavu Data 27 martie 2020 18:09:54
Problema Datorii Scor 0
Compilator java Status done
Runda Arhiva de probleme Marime 1.92 kb
package com.beniamin.savu.datorii;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;

/**
 * Hello world!
 *
 */
public class Main {
	
	/**
	 * Code to detect when the father iterogates Gigel.
	 */
	private static final int FATHER_INTEROGATION_OPERATION = 1;
	
	public static void main(String[] args) throws IOException {
		Scanner reader = new Scanner(new FileInputStream("datorii.in"));
		
		// Read "n" and "m"
		int n = reader.nextInt();
		int m = reader.nextInt();
		
		// Read A1, A2, .... An
		int[] customersDebts = new int[n];
		int totalCustomerDebt = 0;
		for (int i = 0; i<n; i++) {
			customersDebts[i] = reader.nextInt();
			totalCustomerDebt += customersDebts[i];
		}
		
		StringBuilder result = new StringBuilder();
		for (int i = 0; i<m; i++) {
			int query = reader.nextInt();
			if(query == FATHER_INTEROGATION_OPERATION) {
				int dayStart = reader.nextInt();
				int dayEnd = reader.nextInt();
				if(dayEnd - dayStart + 1 == m) {
					result.append(totalCustomerDebt).append("\n");
				} else if (dayEnd - dayStart + 1 < m/2) {
					int totalDebt = 0;
					for(int j = dayStart - 1; j<dayEnd; j++) {
						totalDebt += customersDebts[j];
					}
					result.append(totalDebt).append("\n");
				} else {
					int totalDebt = 0;
					for(int j = 0; j<dayStart-1; j++) {
						totalDebt += customersDebts[j];
					}
					if(dayEnd != m) {
						for(int j = dayEnd; j<m; j++) {
							totalDebt += customersDebts[j];
						}
					}
					result.append(totalCustomerDebt - totalDebt).append("\n");
				}
			} else {
				int day = reader.nextInt() - 1;
				int amountPaid = reader.nextInt();
				customersDebts[day] -= amountPaid;
				totalCustomerDebt -= amountPaid;
			}
		}
		reader.close();
		PrintWriter writer = new PrintWriter("datorii.out"); 
		writer.write(result.toString() + "\n");
		writer.close();
	}
}