Financial Tsunami Banks Problem in Java

Problem:

Banks lend money to each other. In tough economic times, if a bank goes bankrupt, it may not be able to pay back the loan. A bank’s total assets are its current balance plus its loans to other banks. The figure below is a diagram that shows five banks. The banks’ current balances are 25, 125, 175, 75, and 181 million dollars, respectively. The directed edge from node 1 to node 2 indicates that bank 1 lends 40 million dollars to bank 2. Here's a descriptive picture:




If a bank’s total assets are under a certain limit, the bank is unsafe. The money it borrowed cannot be returned to the lender, and the lender cannot count the loan in its total assets. Consequently, the lender may also be unsafe, if its total assets are under the limit. Write a program to find all unsafe banks. Your program reads the input as follows. It first reads two integers n and limit, where n indicates the number of banks and limit is the minimum total assets for keeping a bank safe. It then reads n lines that describe the information for n banks with id from 0 to n-1. The first number in the line is the bank’s balance, the second number indicates the number of banks that borrowed money from the bank, and the rest are pairs of two numbers. Each pair describes a borrower. The first number in the pair is the borrower’s id and the second is the amount borrowed. For example, the input for the five banks in Figure 7.8 is as follows (note that the limit is 201):

5 201
25 2 1 100.5 4 320.5
125 2 2 40 3 85
175 2 0 125 3 75
75 1 0 125
181 1 2 125

The total assets of bank 3 are (75 + 125), which is under 201. So bank 3 is unsafe. After bank 3 becomes unsafe, the total assets of bank 1 fall below (125 + 40). So, bank 1 is also unsafe. The output of the program should be: Unsafe banks are 3 1 (Hint: Use a two-dimensional array borrowers to represent loans.
borrowers[i][j] indicates the loan that bank i loans to bank j. Once bank j becomes unsafe, borrowers[i][j] should be set to 0.)


Solution:

import java.util.Scanner;

public class Tsunami
{
  public static void main (String[] args)
  {
    Scanner scan = new Scanner (System.in);
    int banks = scan.nextInt();
    double[] b = new double[banks];
    double[][] borrowsers = new double[5][5];
    int limit = scan.nextInt();
    for (int i =0;i<b.length;i++)
    {
      b[i] = scan.nextDouble();
      int howmany = scan.nextInt();
      for (int j =0;j<howmany;j++)
      {
        borrowsers[i][scan.nextInt()] = scan.nextDouble();
      }
    }
    
  for (int j =0;j<banks;j++)
  {
    for (int k =0; k<banks;k++)
    {
      int total =0;
      //Calculating total number of loans given by k
      for (int l =0;l<banks;l++)
      {
        total +=borrowsers[k][l];
      }
      if (total + b[k] < limit)
      {
        for (int m =0;m<banks;m++)
        {
          borrowsers[m][k] = 0;
        }
      }
    }
  }
  
  System.out.print("Unsafe banks are ");
  for (int k =0; k<banks;k++)
  {
    int total =0;
    //Calculating total number of loans made by k
    for (int l =0;l<banks;l++)
    {
      total +=borrowsers[k][l];
    }
    if (total + b[k] < limit)
    {
      System.out.print(k + " ");
    }
  }
}
}

5 comments:

  1. What exactly is borrowsers[i][scan.nextInt()] = scan.nextDouble(); is inputting?

    ReplyDelete
  2. Usually this amount is never more than $500,000 and many countries require less. As a point of comparison a regular bank operating in Panama is required to post $10,000,000 cash deposit and the owners go through a rigorous background investigation.guarantor loans

    ReplyDelete
  3. Thanks for the blog filled with so many information. Stopping by your blog helped me to get what I was looking for. Now my task has become as easy as ABC. 파워볼 안전사이트

    ReplyDelete
  4. Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I'll be subscribing to your feed and I hope you post again soon. Big thanks for the useful info. csgo competitive ranks

    ReplyDelete
  5. A college education is critical in order for you or your kids to have a decent future and getting a student loan is an extremely common occurrence today to fund this education. This article deals with exactly how to make it easier for you to repay your Student loan experts ​after graduating from college.

    ReplyDelete