Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
33690 申东铉 【S】rent C++ 运行超时 30 1000 MS 18216 KB 2031 2024-10-18 15:06:24

Tests(6/20):


#include <bits/stdc++.h> #define int long long #define ls (pos << 1) #define rs (pos << 1 | 1) #define mid ((l + r) >> 1) using namespace std; const int maxn = 500005; int n,m,k,d; int x,y; int a[maxn]; struct ST { int sum,lmx,rmx,mx; } tre[maxn << 2]; void pushup (ST &pos,ST l,ST r) { pos.sum = l.sum + r.sum; pos.lmx = max(l.lmx,l.sum + r.lmx); pos.rmx = max(r.rmx,r.sum + l.rmx); pos.mx = max(max(l.mx,r.mx),l.rmx + r.lmx); return; } void build (int pos,int l,int r) { if (l == r) { tre[pos] = {a[l],a[l],a[l],a[l]}; return; } build (ls,l,mid); build (rs,mid + 1,r); pushup(tre[pos],tre[ls],tre[rs]); return; } void update (int pos,int l,int r,int x,int v) { if (l == r) { tre[pos] = {v,v,v,v}; return; } if (x <= mid) { update(ls,l,mid,x,v); } else { update(rs,mid + 1,r,x,v); } pushup(tre[pos],tre[ls],tre[rs]); return; } ST query (int pos,int l,int r,int ql,int qr) { if (ql <= l && r <= qr) { return tre[pos]; } ST res; if (qr <= mid) { res = query(ls,l,mid,ql,qr); } else if (ql > mid) { res = query(rs,mid + 1,r,ql,qr); } else { ST left = query(ls,l,mid,ql,qr); ST right = query(rs,mid+1,r,ql,qr); pushup(res,left,right); } return res; } //signed main () { // scanf("%lld %lld",&N,&Q); // for (int i = 1;i <= N;i++) { // scanf("%lld",&a[i]); // } // build(1,1,N); // while (Q--) { // int o,x,y; // scanf("%lld %lld %lld",&o,&x,&y); // if (o == 2) { // update(1,1,N,x,y); // } else { // if (x > y) { // swap(x,y); // } // printf("%lld\n",query(1,1,N,x,y).mx); // } // } // return 0; //} signed main () { cin >> n >> m >> k >> d; for (int i = 1;i <= n;i++) { a[i] = -k; } build(1,1,n); for (int i = 1;i <= m;i++) { cin >> x >> y; int jp8 = query(1,1,n,x,x).mx; update(1,1,n,x,jp8 + y); if (query(1,1,n,1,n).mx > k * d) { cout << "NO\n"; } else { cout << "YES\n"; } } return 0; }


测评信息: