Countries at war

Last Updated : 3 Jul, 2026

Given two armies, A and B, have the same number of soldiers. The power of their soldiers is given by arr1[] and arr2[], where the i-th soldier of Army A fights only the i-th soldier of Army B.

  • If arr1[i] > arr2[i], Army A wins the battle.
  • If arr1[i] < arr2[i], Army B wins the battle.
  • If arr1[i] == arr2[i], both soldiers are eliminated.

Return "A" if Army A wins more battles, "B" if Army B wins more battles, otherwise return "DRAW".

Examples:

Input: arr1[] = [2, 2], arr2[] = [5, 5]
Output: "B"
Explanation:
Battle 1: 2 < 5, so Army B wins.
Battle 2: 2 < 5, so Army B wins.
Army B wins 2 battles, while Army A wins 0 battles. Therefore, the winner is "B".

Input: arr1[] = [9], arr2[] = [8]  
Output: "A"
Explanation:
Battle 1: 9 > 8, so Army A wins.
Army A wins 1 battle, while Army B wins 0 battles. Therefore, the winner is "A".

Try It Yourself
redirect icon

[Naive Approach] Store Result of Every Battle - O(n) Time and O(n) Space

The idea is to first determine the winner of each battle and store the result in an auxiliary array. After processing all battles, traverse the stored results and count the number of battles won by Army A and Army B. Finally, compare the counts to determine the overall winner.

C++
#include <vector>
#include <iostream>
using namespace std;

string countryAtWar(vector<int> &arr1, vector<int> &arr2)
{
    int n = arr1.size();

    // Stores result of each battle:
    // 1 -> Army A wins
    // -1 -> Army B wins
    // 0 -> Draw
    vector<int> result(n);

    for (int i = 0; i < n; i++)
    {
        if (arr1[i] > arr2[i])
            result[i] = 1;
        else if (arr1[i] < arr2[i])
            result[i] = -1;
        else
            result[i] = 0;
    }

    int aWins = 0, bWins = 0;

    for (int x : result)
    {
        if (x == 1)
            aWins++;
        else if (x == -1)
            bWins++;
    }

    if (aWins > bWins)
        return "A";

    if (bWins > aWins)
        return "B";

    return "DRAW";
}

int main()
{
    vector<int> arr1 = {9};
    vector<int> arr2 = {8};

    cout << countryAtWar(arr1, arr2);

    return 0;
}
Java
class GFG {
    static String countryAtWar(int[] arr1, int[] arr2) {
        int n = arr1.length;

        // Stores result of each battle:
        // 1 -> Army A wins
        // -1 -> Army B wins
        // 0 -> Draw
        int[] result = new int[n];

        for (int i = 0; i < n; i++) {
            if (arr1[i] > arr2[i])
                result[i] = 1;
            else if (arr1[i] < arr2[i])
                result[i] = -1;
            else
                result[i] = 0;
        }

        int aWins = 0, bWins = 0;

        for (int x : result) {
            if (x == 1)
                aWins++;
            else if (x == -1)
                bWins++;
        }

        if (aWins > bWins)
            return "A";

        if (bWins > aWins)
            return "B";

        return "DRAW";
    }

    public static void main(String[] args) {
        int[] arr1 = {9};
        int[] arr2 = {8};

        System.out.println(countryAtWar(arr1, arr2));
    }
}
Python
def countryAtWar(arr1, arr2):
    n = len(arr1)

    # Stores result of each battle:
    # 1 -> Army A wins
    # -1 -> Army B wins
    # 0 -> Draw
    result = [0] * n

    for i in range(n):
        if arr1[i] > arr2[i]:
            result[i] = 1
        elif arr1[i] < arr2[i]:
            result[i] = -1
        else:
            result[i] = 0

    aWins = result.count(1)
    bWins = result.count(-1)

    if aWins > bWins:
        return "A"

    if bWins > aWins:
        return "B"

    return "DRAW"

if __name__ == "__main__":
    arr1 = [9]
    arr2 = [8]

    print(countryAtWar(arr1, arr2))
C#
using System;
using System.Collections.Generic;

class GFG {
    static string countryAtWar(int[] arr1, int[] arr2)
    {
        int n = arr1.Length;

        // Stores result of each battle:
        // 1 -> Army A wins
        // -1 -> Army B wins
        // 0 -> Draw
        List<int> result = new List<int>();

        for (int i = 0; i < n; i++) {
            if (arr1[i] > arr2[i])
                result.Add(1);
            else if (arr1[i] < arr2[i])
                result.Add(-1);
            else
                result.Add(0);
        }

        int aWins = 0, bWins = 0;

        foreach(int x in result)
        {
            if (x == 1)
                aWins++;
            else if (x == -1)
                bWins++;
        }

        if (aWins > bWins)
            return "A";

        if (bWins > aWins)
            return "B";

        return "DRAW";
    }

    static void Main()
    {
        int[] arr1 = { 9 };
        int[] arr2 = { 8 };

        Console.WriteLine(countryAtWar(arr1, arr2));
    }
}
JavaScript
function countryAtWar(arr1, arr2) {
    let n = arr1.length;

    // Stores result of each battle:
    // 1 -> Army A wins
    // -1 -> Army B wins
    // 0 -> Draw
    let result = new Array(n).fill(0);

    for (let i = 0; i < n; i++) {
        if (arr1[i] > arr2[i])
            result[i] = 1;
        else if (arr1[i] < arr2[i])
            result[i] = -1;
        else
            result[i] = 0;
    }

    let aWins = result.filter(x => x === 1).length;
    let bWins = result.filter(x => x === -1).length;

    if (aWins > bWins)
        return "A";

    if (bWins > aWins)
        return "B";

    return "DRAW";
}

// Driver Code
let arr1 = [9];
let arr2 = [8];

console.log(countryAtWar(arr1, arr2));

Output
A

[Expected Approach] Single Traversal Counting - O(n) Time and O(1) Space

The idea is to traverse both arrays once and maintain the number of battles won by each army. For every position, update the corresponding win count based on the comparison of soldier powers. Finally, compare the total wins to find the winner.

C++
#include <vector>
#include <string>
using namespace std;

string countryAtWar(vector<int> &arr1, vector<int> &arr2)
{
    int aWins = 0, bWins = 0;

    // Compare the power of corresponding soldiers.
    for (int i = 0; i < (int)arr1.size(); i++)
    {
        // Army A wins this battle.
        if (arr1[i] > arr2[i])
        {
            aWins++;
        }

        // Army B wins this battle.
        else if (arr1[i] < arr2[i])
        {
            bWins++;
        }

        // If powers are equal, both soldiers are eliminated.
        // This battle contributes to neither army.
    }

    // Determine the overall winner.
    if (aWins > bWins)
        return "A";

    if (bWins > aWins)
        return "B";

    return "DRAW";
}

int main()
{
    vector<int> arr1 = {9};
    vector<int> arr2 = {8};

    cout << countryAtWar(arr1, arr2);

    return 0;
}
Java
import java.util.Arrays;

class GFG {
    static String countryAtWar(int[] arr1, int[] arr2) {
        int aWins = 0, bWins = 0;

        // Compare the power of corresponding soldiers.
        for (int i = 0; i < arr1.length; i++) {

            // Army A wins this battle.
            if (arr1[i] > arr2[i]) {
                aWins++;
            }

            // Army B wins this battle.
            else if (arr1[i] < arr2[i]) {
                bWins++;
            }

            // If powers are equal, both soldiers are
            // eliminated. This battle contributes to
            // neither army.
        }

        // Determine the overall winner.
        if (aWins > bWins)
            return "A";

        if (bWins > aWins)
            return "B";

        return "DRAW";
    }

    public static void main(String[] args) {
        int[] arr1 = {9};
        int[] arr2 = {8};

        System.out.println(countryAtWar(arr1, arr2));
    }
}
Python
def countryAtWar(arr1, arr2):
    aWins = 0
    bWins = 0

    # Compare the power of corresponding soldiers.
    for i in range(len(arr1)):

        # Army A wins this battle.
        if arr1[i] > arr2[i]:
            aWins += 1

        # Army B wins this battle.
        elif arr1[i] < arr2[i]:
            bWins += 1

        # If powers are equal, both soldiers are eliminated.
        # This battle contributes to neither army.

    # Determine the overall winner.
    if aWins > bWins:
        return "A"

    if bWins > aWins:
        return "B"

    return "DRAW"

if __name__ == "__main__":
    arr1 = [9]
    arr2 = [8]

    print(countryAtWar(arr1, arr2))
C#
using System;

class GFG {
    static string countryAtWar(int[] arr1, int[] arr2)
    {
        int aWins = 0, bWins = 0;

        // Compare the power of corresponding soldiers.
        for (int i = 0; i < arr1.Length; i++) {

            // Army A wins this battle.
            if (arr1[i] > arr2[i]) {
                aWins++;
            }

            // Army B wins this battle.
            else if (arr1[i] < arr2[i]) {
                bWins++;
            }

            // If powers are equal, both soldiers are
            // eliminated. This battle contributes to
            // neither army.
        }

        // Determine the overall winner.
        if (aWins > bWins)
            return "A";

        if (bWins > aWins)
            return "B";

        return "DRAW";
    }

    static void Main()
    {
        int[] arr1 = { 9 };
        int[] arr2 = { 8 };

        Console.WriteLine(countryAtWar(arr1, arr2));
    }
}
JavaScript
function countryAtWar(arr1, arr2) {
    let aWins = 0, bWins = 0;

    // Compare the power of corresponding soldiers.
    for (let i = 0; i < arr1.length; i++) {

        // Army A wins this battle.
        if (arr1[i] > arr2[i]) {
            aWins++;
        }

        // Army B wins this battle.
        else if (arr1[i] < arr2[i]) {
            bWins++;
        }

        // If powers are equal, both soldiers are eliminated.
        // This battle contributes to neither army.
    }

    // Determine the overall winner.
    if (aWins > bWins)
        return "A";

    if (bWins > aWins)
        return "B";

    return "DRAW";
}

// Driver Code
let arr1 = [9];
let arr2 = [8];

console.log(countryAtWar(arr1, arr2));

Output
A
Comment