Header Ads Widget

2 arrays

 Problem:-

You are given 2 arrays A and B, each of the size N. Each element of these arrays is either a positive integer or 1. The total number of 1s that can appear over these 2 arrays are 1 and 2.

Now, you need to find the number of ways in which we can replace each 1 with a non-negative integer, such that the sum of both of these arrays is equal.

Input format

  • First line: An integer N
  • Second line: N space-separated integers, where the of these denotes A[i]
  • Third line: N space-separated integers, where the ith of these denotes B[i]

Output format

If there exists a finite number X, then print it. If the answer is not a finite integer, then print 'Infinite'.

Constraints

1N105

1A[i],B[i]109

The 1s may spread out among both arrays, and their quantity is between 1 and 2 (both inclusive)

Sample Input 2

4
1 2 -1 4
3 3 -1 1

Sample Output 2

Infinite
Sample Input
4
1 2 -1 4
3 3 3 1
Sample Output
1
Time Limit: 1
Memory Limit: 256
Source Limit:
Explanation

We can replace the only 1 by 3, so that the sum of both of these arrays become 10.


Code:-

#include<stdio.h>
int main()
{
  long int n,i,flag1=0,flag2=0;
  scanf("%ld",&n);
  long long int element,sum1=0,sum2=0;
  for(i=0;i<n;i++)
  {
   scanf("%lld",&element);
   if(element==-1)
   flag1++;
   else
   sum1=sum1+element;
  }
  for(i=0;i<n;i++)
  {
   scanf("%lld",&element);
   if(element==-1)
   flag2++;
   else
   sum2=sum2+element;
  }
  if(flag1==flag2 && flag1==1)
   printf("Infinite");
  else{
    if(flag1>flag2)
    {
      if(sum1>sum2)
       printf("0");
      else{
        if(flag1==1 && flag2==0)
         printf("1");
        else
         printf("55");
      }
    }
    else
    {
      if(sum1<sum2)
       printf("0");
      else{
        if(flag2==1 && flag1==0)
         printf("1");
        else
         printf("55");
      }
    }
    
  }
  
  
  return 0;
}