QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#793164#8949. 赫露艾斯塔xlpg0713Compile Error//C++234.3kb2024-11-29 17:22:482024-11-29 17:22:54

Judging History

你现在查看的是最新测评结果

  • [2024-11-29 17:22:54]
  • 评测
  • [2024-11-29 17:22:48]
  • 提交

answer

#pragma GCC target("avx", "avx2")
#include<iostream>
#include<random>
#include<chrono>
#include<vector>
#include<algorithm>
#define pb push_back
const int N = 2e6 + 10;
std::mt19937 rn(std::chrono::system_clock::now().time_since_epoch().count());
namespace IO{
    char buf[70000000], *it = buf; void re(){it=buf;}
    template <typename T> inline void rd(T&x){
        for(x=0; !isdigit(*it); it++);
        for(; isdigit(*it); ) x=x*10+*it++-'0';
    }
    template <typename T> inline void wt(T x){
        static char st[20], *tp=st; if(!x) *it++='0';
        while(x) *++tp=char(x%10+'0'), x/=10;
        while(tp!=st) *it++=*tp--; *it++='\n';
    }
    void flush(){fwrite(buf, 1, it - buf, stdout);}
} using IO::rd, IO::wt, IO::re;
struct bst{
    struct nd{int ls, rs, v, x, y, sz, tx, ty;}t[N];
    nd&ls(int x){return t[t[x].ls];} nd&rs(int x){return t[t[x].rs];}
    void pu(int p){t[p].sz = ls(p).sz + rs(p).sz + 1;}
    void pt(int p,int x,int y){x?t[p].x=t[p].tx=x:0;y?t[p].y=t[p].ty=y:0;}
    void pd(int p){auto&o=t[p];pt(o.ls,o.tx,o.ty),pt(o.rs,o.tx,o.ty),o.tx=o.ty=0;}
    void spx(int p, int k, int&l, int&r){
        if(!p) return l = r = 0, void(); pd(p);
        if(t[p].x <= k) l = p, spx(t[p].rs, k, t[p].rs, r);
        else r = p, spx(t[p].ls, k, l, t[p].ls); pu(p);
    }
    void spy(int p, int k, int&l, int&r){
        if(!p) return l = r = 0, void(); pd(p);
        if(t[p].y >= k) l = p, spy(t[p].rs, k, t[p].rs, r);
        else r = p, spy(t[p].ls, k, l, t[p].ls); pu(p);
    }
    void spv(int p, int k, int&l, int&r){
        if(!p) return l = r = 0, void(); pd(p);
        if(t[p].x-t[p].y <= k) l = p, spv(t[p].rs, k, t[p].rs, r);
        else r = p, spv(t[p].ls, k, l, t[p].ls); pu(p);
    }
    int mg(int l, int r){
        if(!l || !r) return l + r; pd(l), pd(r);
        if(t[l].v<t[r].v) return t[l].rs=mg(t[l].rs,r),pu(l),l;
        else return t[r].ls=mg(l,t[r].ls),pu(r),r;
    }
    int szx(int p, int k){ int rs=0; while(p) pd(p),
            t[p].x>k?p=t[p].ls:(rs+=ls(p).sz+1,p=t[p].rs); return rs;
    }
    int szy(int p, int k){ int rs=0; while(p) pd(p),
            t[p].y<k?p=t[p].ls:(rs+=ls(p).sz+1,p=t[p].rs); return rs;
    }
} T;
struct qu{int x, y, p;}; int n, m, ct, rt, x[N], y[N], rs[N];
int op[N], bx[N], by[N], qx[N], qy[N]; std::vector<int> vc[N];
template <class T, T(*op)(T, T), T(*e)()> struct bt{ T t[N];
    bt(){for(int i = 1; i <= 1e6; i++) t[i] = e();}
    void ad(int p, T x){while(p) t[p] = op(t[p], x), p -= p & -p;}
    T qr(int p){T r=e(); while(p <= 1e6) r = op(r, t[p]), p += p & -p; return r;}
};
bt<int, [](int a, int b){return std::min(a, b);}, [](){return 1000001;}> tmn;
bt<int, [](int a, int b){return a + b;}, [](){return 0;}> tx, ty, tm;
bt<int, [](int a, int b){return std::max(a, b);}, [](){return 0;}> tmx;
int main(){
    fread(IO::buf, 1, sizeof IO::buf, stdin);
    std::vector<qu> q; rd(n), rd(m); 
    for(int i = 1; i <= n; i++) rd(x[i]), rd(y[i]), q.pb({x[i], y[i], i});
    for(int i = 1; i <= m; i++) rd(op[i]), 
        rd(bx[i]), rd(by[i]), rd(qx[i]), rd(qy[i]), q.pb({bx[i], by[i], i + n}); 
    std::sort(q.begin(), q.end(), [&](qu a, qu b)
        {return a.x != b.x ? a.x > b.x : a.p > b.p;});
    for(auto [x, y, p] : q) p > n ? tmn.ad(y, p - n) : vc[tmn.qr(y)].pb(p);
    q.clear(); for(int i = 1; i <= n; i++) q.push_back({x[i], y[i], i});
    for(int i = 1; i <= m; i++) q.push_back({qx[i], qy[i], i + n});
    std::sort(q.begin(), q.end(), [&](qu a, qu b)
        {return a.x != b.x ? a.x > b.x : a.p > b.p;});
    for(auto [x, y, p] : q) p > n ? rs[p - n] = tm.qr(y + 1) : (tm.ad(y, 1), 0);
    for(int i = 1; i <= n; i++) tx.ad(x[i], 1), ty.ad(y[i], 1); re();
    for(int i = 1, sz = n, u, l, r, p; i <= m; i++){
        T.spx(rt, bx[i], l, r), T.spy(l, by[i] + 1, p, u);
        op[i] == 1 ? T.pt(u, 0, by[i]) : T.pt(u, bx[i], 0);
        rt = T.mg(T.mg(p, u), r); for(auto v:vc[i]){
            tx.ad(x[v], -1), ty.ad(y[v], -1), --sz;
            op[i] == 1 ? y[v] = by[i] : x[v] = bx[i]; T.spv(rt, x[v] - y[v], l, r);
            T.t[v] = {0, 0, (int)rn(), x[v], y[v], 1, 0, 0}; rt = T.mg(T.mg(l, v), r);
        } tmx.ad(bx[i], by[i]); if(tmx.qr(qx[i] + 1)>qy[i]){wt(0);continue;}
        rs[i] += sz + T.szx(rt, qx[i]) - T.szy(rt, qy[i] + 1);
        rs[i] -= tx.qr(qx[i] + 1) + ty.qr(qy[i] + 1); wt(rs[i]);
    } IO::flush();
}

详细

answer.code: In function ‘int main()’:
answer.code:67:10: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   67 |     fread(IO::buf, 1, sizeof IO::buf, stdin);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/13/string:43,
                 from /usr/include/c++/13/bits/locale_classes.h:40,
                 from /usr/include/c++/13/bits/ios_base.h:41,
                 from /usr/include/c++/13/ios:44,
                 from /usr/include/c++/13/ostream:40,
                 from /usr/include/c++/13/iostream:41,
                 from answer.code:2:
/usr/include/c++/13/bits/allocator.h: In destructor ‘constexpr std::_Vector_base<int, std::allocator<int> >::_Vector_impl::~_Vector_impl()’:
/usr/include/c++/13/bits/allocator.h:184:7: error: inlining failed in call to ‘always_inline’ ‘constexpr std::allocator< <template-parameter-1-1> >::~allocator() noexcept [with _Tp = int]’: target specific option mismatch
  184 |       ~allocator() _GLIBCXX_NOTHROW { }
      |       ^
In file included from /usr/include/c++/13/vector:66,
                 from /usr/include/c++/13/bits/random.h:34,
                 from /usr/include/c++/13/random:51,
                 from answer.code:3:
/usr/include/c++/13/bits/stl_vector.h:133:14: note: called from here
  133 |       struct _Vector_impl
      |              ^~~~~~~~~~~~