#include<stdio.h>
#include<string.h>
#include<limits.h>
    int twos_complement(const char *binary_str){
        int length = strlen(binary_str);
        int decimal_value = 0;
        for (int i= 0;i<length; i++){
            if (binary_str[i] !='0' && binary_str[i] !='1'){
                printf("Invalid input\n");
                return INT_MIN;
            }
        }
        int is_negative = (binary_str[0]=='1');
        if (is_negative){
            char flipped[length + 1];
            for (int i=0;i< length; i++){
                flipped[i] = (binary_str[i] == '0') ? '1' : '0';
            }
            flipped[length] = '\0';
            decimal_value = -((int)strtol(flipped, NULL,2) + 1);
        }
        else
        {
            decimal_value = (int)strtol(binary_str, NULL,2);
        }
        return decimal_value;
    }
    int main()
    {
        char binary_str[33];
        printf("Enter a binary string (up to 32 bites):");
        scanf("%32s",binary_str);
        int result = twos_complement(binary_str);
        int (result ! = INT_MIN){
            printf("%d\n",result);
        }
        return 0;
    }