求助大佬们,来看看我神奇的代码

P1678 烦恼的高考志愿

456laji @ 2020-05-28 22:25:14

我下载了样例一的测试点,测试点的n ,m 分别是429,517。

但是我的代码没有办法输入到429,即使手动输入也没有办法,这是为什么呢?

#include<bits/stdc++.h>
#define IO std::ios::sync_with_stdio(0),cin.tie(0)
using namespace std;
typedef long long ll;
const int N=2e7+10;
int c[N];
typedef struct{
    ll num;
    int a;
    int b;
}STU;
STU stu[N];

ll cmp(STU s1,STU s2)
{
    return s1.num < s2.num;
}

int main()
{
    IO ;

    ll m,n,len=0;
    cin>>n>>m;
    for(int i=0;i<n;i++)
    {
        cin>>stu[len].num;
        stu[len].a=1;stu[len].b=0;
        len++;
    }
    for(int i=0;i<m;i++)
    {
        cin>>stu[len].num;
        stu[len].a=0,stu[len].b=1;
        len++;
    }
    sort(stu,stu+len,cmp);

    ll res_a=-1,res_b=-1,sum=0,pa,pb;
    for(int i=0;i<len;i++)
    {
        if(stu[i].a)
        {
            res_a=stu[i].num;
            pa=i;
        }
        if(stu[i].b)
        {
            res_b=stu[i].num;
            pb=i;
        }
        if(res_a>=0&&res_b>=0)
        {
            sum+=abs(res_a-res_b);//printf("a=%lld   b=%lld   sum=%lld \n",res_a,res_b,sum);
            stu[pa].a=0;
            stu[pb].b=0;
            res_a=-1,res_b=-1;
        }
    }
    res_a=-1,res_b=-1,pa,pb;
    for(int i=len-1;i>=0;i--)
    {
        if(stu[i].a)
        {
            res_a=stu[i].num;
            pa=i;
        }
        if(stu[i].b)
        {
            res_b=stu[i].num;
            pb=i;
        }
        if(res_a>=0&&res_b>=0)
        {
            sum+=abs(res_a-res_b);//printf("a=%lld   b=%lld   sum=%lld \n",res_a,res_b,sum);
            stu[pa].num=-1;
            stu[pb].num=-1;
            res_a=-1,res_b=-1;
        }
    }
    printf("%lld\n",sum);
    return 0;
} 

by 囧仙 @ 2020-05-28 22:47:26

@456laji \rm emmm,你说的输入,是指在控制台(就是那个黑色的窗口)输入嘛

如果是控制台的话,因为缓存区的问题,是不能一次性输入太多东西的吧。


by Terrible @ 2020-05-28 22:50:37

文件读入

freopen("P1678_1.in","r",stdin);

by Terrible @ 2020-05-28 22:51:20

文件放到与你程序同级的文件夹里。


by 456laji @ 2020-05-28 22:57:56

@囧仙 是,就是控制台。原来是这样,那我改成sacnf应该可以吧。谢谢你,我试试。


by 456laji @ 2020-05-28 23:01:49

@Terrible 我放进去了,但是不是运行错误,就是内存超限。


by B_1168 @ 2020-05-29 05:08:16

@456laji 是scanf()不是sacnf()


|