WA第8个点,悬关
查看原帖
WA第8个点,悬关
905073
zyhe2013楼主2024/4/19 16:13
#include <bits/stdc++.h>
using namespace std;

int a[300005];
long long s[300005];
map<int,int>l,r;
map<int,bool>f;

signed main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        if(l[a[i]]==0)l[a[i]]=i;
        r[a[i]]=i;
        if(a[i]>0)s[i]=a[i];
        s[i]+=s[i-1];
    }
    int maxn=-1e9,k=0,xl,rl;
    for(int i=1;i<=n;i++)
    {
        int lt=l[a[i]],rt=r[a[i]];
        if(f[a[i]])continue;
        long long ans=s[rt]-s[lt-1];
        if(maxn<ans)
        {
            maxn=ans;
            xl=lt;
            rl=rt;
        }
    }
    cout<<maxn<<" ";
    for(int i=1;i<xl;i++)k++;
    for(int i=xl;i<=rl;i++)if(a[i]<0)k++;
    for(int i=rl+1;i<=n;i++)k++;
    cout<<k<<"\n";
    for(int i=1;i<xl;i++)cout<<i<<" ";
    for(int i=xl;i<=rl;i++)if(a[i]<0)cout<<i<<" ";
    for(int i=rl+1;i<=n;i++)cout<<i<<" ";
    return 0;
}

大佬求调,我貌似是没办法判断最少两个的情况

2024/4/19 16:13
加载中...