各位能帮看看是哪里溢出么

能帮忙看看这代码溢出在哪里么?
编译通过,但是以一运行就溢出,连输入都没输入就溢出,是数组开得太大吗

#include<bits/stdc++.h>
using namespace std;

struct rec
{
    string xh;
    int df;
    int cf;
    int zf;
};

int main()
{
    struct rec pin;
    struct rec a1[200001];
    struct rec a2[200001];
    struct rec a3[200001];
    struct rec a4[200001];
    int n,l,h;
    int q1,q2,q3,q4;
    q1=0;
    q2=0;
    q3=0;
    q4=0;
    cin>>n>>l>>h;
    int i;
    for(i=1;i<=n;i++)
    {
        cin>>pin.xh>>pin.df>>pin.cf;
        if ((pin.df>=l)&&(pin.cf>=l))
        {
            if((pin.df>=h)&&(pin.cf>=h))
            {
                q1++;
                a1[q1]=pin;
                a1[q1].zf=pin.df+pin.cf;    
            }
            else if(pin.df>=h)
            {
                q2++;
                a2[q2]=pin;
                a2[q2].zf=pin.df+pin.cf;
            }
            else if(pin.df>=pin.cf)
            {
                q3++;
                a3[q3]=pin;
                a3[q3].zf=pin.df+pin.cf;
            }
            else
            {
                q4++;
                a4[q4]=pin;
                a4[q4].zf=pin.df+pin.cf;
            }
        }    
    }
    
    
    return 0;
}

    struct rec a1[200001];
    struct rec a2[200001];
    struct rec a3[200001];
    struct rec a4[200001];

就这几个就80万了,每个算20字节就16MB了,堆栈肯定溢出