CSES - Tasajako Annettuna on lista kokonaislukuja ja tehtäväsi on selvittää, onko luvut mahdollista jakaa kahteen ryhmään niin, että molempien ryhmien summa on sama.

Esimerkiksi kun lista on $[9,4,8,7,6]$, mahdollinen ratkaisu on muodostaa ryhmät $[8,9]$ ja $[4,6,7]$. Tällöin kummankin ryhmän lukujen summa on $17$.

Voit olettaa, että jokainen luku on välillä $1 \dots 10^9$ ja että listalla on enintään $16$ lukua.

Python

Toteuta tiedostoon partition.py funktio check, joka ilmoittaa, onko luvut mahdollista jakaa tasan.
def check(t):
    # TODO

if __name__ == "__main__":
    print(check([3,4,5])) # False
    print(check([16,8,4,4])) # True
    print(check([9,4,8,7,6])) # True
    print(check([1,2,3,4,5,6])) # False
    print(check([1,2,3,4,5,6,7])) # True
    print(check([4,4,4,6,6])) # True
Java

Toteuta tiedostoon Partition.java metodi check, joka ilmoittaa, onko luvut mahdollista jakaa tasan.
public class Partition {
    public boolean check(int[] t) {
        // TODO
    }

    public static void main(String[] args) {
        Partition p = new Partition();
        System.out.println(p.check(new int[] {3,4,5})); // false
        System.out.println(p.check(new int[] {16,8,4,4})); // true
        System.out.println(p.check(new int[] {9,4,8,7,6})); // true
        System.out.println(p.check(new int[] {1,2,3,4,5,6})); // false
        System.out.println(p.check(new int[] {1,2,3,4,5,6,7})); // true
        System.out.println(p.check(new int[] {4,4,4,6,6})); // true
    }
}