1 条题解

  • 0
    @ 2023-8-17 21:30:16
    #include<bits/stdc++.h>
    using namespace std;
    int a[50010],ans[50010],d[50010],z[50010],top;
    int main()
    {
        int n;
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
            scanf("%d%d",&a[i],&d[i]);
        for(int i=1;i<=n;i++)
        {
            while(top&&a[i]>a[z[top]])
            {
                ans[i]+=d[z[top]];
                top--;
            }
            z[++top]=i;
        }
    	top=0;
        for(int i=n;i>=1;i--)
        {
            while(top&&a[z[top]]<a[i])
            {
                ans[i]+=d[z[top]];
                top--;
            }
            z[++top]=i;
        }
        int maxx=0;
        for(int i=1;i<=n;i++)
            maxx=max(maxx,ans[i]);
        printf("%d\n",maxx);
        return 0;
    }
    
    • 1

    信息

    ID
    1657
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    6
    已通过
    5
    上传者