为什么有getchar()却直接跳过输入

问题遇到的现象和发生背景 为什么有getchar()却直接跳过输入

本题请你实现一个简单的投票统计工具:投票同意的人输入 1,反对的人输入 0。简单多数胜。

输入格式:
输入在一行中给出一系列的投票值,1 表示同意,0 表示反对,-1 表示结束。

输出格式:
统计并输出投票的结果:如果同意的人多就输出 Yes;反对的人多就输出 No;平票就输出 Tie。然后在第二行输出同意的人数和反对的人数,其间隔 1 个冒号 :。

输入样例 1:
1 0 0 1 1 -1
结尾无空行
输出样例 1:
Yes
3:2

问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
#include<stdio.h>
int main(){
    int a[100000000];
    int i=0,a=0,b=0;
        while(a[i]!=-1){
            scanf("%d",&a[i]);
            i++;
            
        }
    n=i;
    for(i=0;i<n;i++){
        if(a[i]==1){
            a++;
        }
        if(a[i]==0){
            b++;
        }
    }
    if(a>=b){
        printf("Tie\n");
        printf("%d:%d\n",a,b);
    }if(a<b){
        printf("No\n");
        printf("%d:%d\n",a,b);
    }
    return 0;
        
}

a数组空间申请的太大了啊,申请不出来的

修改如下,供参考:

#include<stdio.h>
int main()
{
    int a[2]={0};
    int i;     //a=0,b=0;
    while(scanf("%d",&i)==1 && i != -1){
            a[i]++;
    }
    if(a[1] == a[0]){
        printf("Tie\n");
        printf("%d:%d",a[1],a[0]);
    }
    else if(a[1] > a[0]){
        printf("Yes\n");
        printf("%d:%d\n",a[1],a[0]);
    }else{
        printf("No\n");
        printf("%d:%d\n",a[1],a[0]);
    }
    return 0;
}

哪里有getchar呀,是不是发错代码了