708ms,还有优化空间吗
查看原帖
708ms,还有优化空间吗
682739
CuteMurasame楼主2024/9/5 11:11

别举报

#include <cstdint>
#include <cstring>
#include <iostream>
#include <sys/mman.h>
#include <sys/stat.h>
main()
{
    struct stat st;auto f=fileno(stdin);fstat(f,&st);auto c=(char*)mmap(nullptr,st.st_size,PROT_READ,MAP_PRIVATE,f,0);
    auto n=0u;while (*c>='0')n=n*10+(*c++-'0');++c;++c;
    int s=0;
    unsigned a[0x10000],v,p;
    memset(a, -1, 0x40000);
    for(int i='0';i<='9';i++)for(int j='0';j<='9';j++)a[(i<<8)+j]=(j-'0')*10+(i-'0');
    for(;n--;c++)
    {
        v=0,p=0;
        c+=p=*c=='-';
        while(~a[*(uint16_t*)(c)])v=v*100+a[*(uint16_t*)(c)],c+=2;
        if(*c>='0')v=v*10+((*c++)^'0');
        s+=p?-v:v;
    }
    printf("%d",s);
}
2024/9/5 11:11
加载中...