Re: Untitled

From Cobalt Panda, 3 Years ago, written in Plain Text, viewed 375 times. This paste is a reply to Untitled from Soiled Crow - go back
URL http://axuhongbo.top/paste/view/8d026015/diff Embed
Viewing differences between Untitled and Re: Untitled
#include <bits/stdc++.<iostream>
#include<bits/stdc++.
h>
#define ll long long int
#define ls rt<<1
#define rs rt<<1|1
using namespace std;

std;
const int MAX = 112345;

maxn=400100;
struct Node node
{
    int minn;
    
sum,cnt;
}tr[maxn];
int lazy;
    
lz[maxn];
int sum;
} tree[MAX * 4];

int data[MAX];

#define lson (o<<1)
#define rson (o<<1|1)
#define MID int m = (l + r) / 2

b[maxn];
void push_down(int o) pushdown(int rt)
{
    if (tree[o].lazy) if(lz[rt])
    
{
        int &lazy = tree[o].lazy;
        tree[lson].minn -= lazy;
        tree[rson].minn -= lazy;
        tree[lson].lazy += lazy;
        tree[rson].lazy += lazy;
        lazy = 0;
lz[ls]+=lz[rt];
        lz[rs]+=lz[rt];
        tr[ls].cnt-=lz[rt];
        tr[rs].cnt-=lz[rt];
        lz[rt]=0;
    }
}

}
void pushup(int rt)
{
    tr[rt].cnt=min(tr[ls].cnt,tr[rs].cnt);
    tr[rt].sum=tr[ls].sum+tr[rs].sum;
}
void build(int o, int l, int r) l,int r,int rt)
{
    tree[o].lazy = 0;
    if (l == r) 
lz[rt]=0;
    if(l==r)
    
{
        tree[o].minn = data[l];
        tree[o].sum = 0;
        return;
tr[rt].cnt=b[l];
        tr[rt].sum=0;
        return ;
    }
    MID;
    build(lson, l, m);
    build(rson, m + 1, r);
    tree[o].minn = min(tree[lson].minn, tree[rson].minn);
    tree[o].sum = tree[lson].sum + tree[rson].
int mid=(l+r)/2;
    build(l,mid,ls);
    build(mid+1,r,rs);
    tr[rt].cnt=min(tr[ls].cnt,tr[rs].cnt);
    tr[rt].sum=tr[ls].sum+tr[rs].
sum;
}

}
void update(int o, int l, int r, int ql, int qr) {
    if (qr < l || r < ql) return;
    if (ql <= l && r <= qr) 
L,int R,int l,int r,int rt)
{

    if(L<=l&&r<=R)
    
{
        tree[o].lazy += 1;
        tree[o].minn -= 1;
        return;
tr[rt].cnt-=1;
        lz[rt]+=1;
        return ;
    }
    push_down(o);
    MID;
    update(lson, l, m, ql, qr);
    update(rson, m + 1, r, ql, qr);
    tree[o].minn = min(tree[lson].minn, tree[rson].minn);
    tree[o].sum = tree[lson].sum + tree[rson].sum;
}

pushdown(rt);
    
int ans = 0;

mid=(l+r)/2;
    if(L<=mid) update(L,R,l,mid,ls);
    if(R>mid) update(L,R,mid+1,r,rs);
    pushup(rt);
}
void dfs(int o, int l, int r) date(int l,int r,int rt)
{
    if (l == r) if(tr[rt].cnt!=0) return ;
    if(l==r)
    
{
        tree[o].minn = data[l];
        tree[o].
tr[rt].sum++;
        return;
tr[rt].cnt=b[l];
        return ;
    }
    push_down(o);
    MID;
    if (tree[lson].minn == 0) dfs(lson, l, m);
    if (tree[rson].minn == 0) dfs(rson, m + 1, r);
    tree[o].minn = min(tree[lson].minn, tree[rson].minn);
    tree[o].sum = tree[lson].sum + tree[rson].
pushdown(rt);
    int mid=(l+r)/2;
    date(l,mid,ls);
    date(mid+1,r,rs);
    pushup(rt);
}
int query(int ql,int qr,int l,int r,int rt)
{
    if(ql<=l&&r<=qr)
    {
        return tr[rt].
sum;
}

int query(int o, int l, int r, int ql, int qr) {
    if (qr < l || r < ql) return 0;
    if (ql <= l && r <= qr) {
        return tree[o].sum;
    }
    push_down(o);
    MID;
    
pushdown(rt);
    int mid=(l+r)/2;
    int ans=0;
    if(mid>=ql) ans+=query(ql,qr,l,mid,ls);
    if(mid<qr) ans+=query(ql,qr,mid+1,r,rs);
    
return query(lson, l, m, ql, qr) + query(rson, m + 1, r, ql, qr);
}

ans;
}
int main() main()
{
    int n, m;
    while(~scanf("%d %d", &n, &m)){
        for (int i = 1; i <= n; i++) scanf("%d", data + i);
        build(1, 1, n);
        while (m--) 
n,m,x,y;
    char c[10];
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        memset(tr,0,sizeof(tr));
        for(int i=1;i<=n;i++)scanf("%d",&b[i]);
        build(1,n,1);

        while(m--)
        
{
            char op[10];
            int l, r;
            scanf("%s %d %d", op, &l, &r);
            if (op[0] == 'a') 
scanf("%s%d%d",c,&x,&y);
            if(!strcmp(c,"add"))
            
{
                update(1, 1, n, l, r);
                dfs(1, 1, n);
            } else 
update(x,y,1,n,1);
                date(1,n,1);
            }
            else
            
{
                printf("%d\n", query(1, 1, n, l, r));
printf("%d\n",query(x,y,1,n,1));
            }
        }
    }
    return 0;\r\n}}

Reply to "Re: Untitled"

Here you can reply to the paste above

captcha