Submission #1007981

#TimeUsernameProblemLanguageResultExecution timeMemory
1007981LuvidiFeast (NOI19_feast)C++17
12 / 100
46 ms19500 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define pll pair<ll, ll>
#define pii pair<int, int>
#define fs first
#define sc second
#define pb push_back

void solve() {
    int n,k;
    cin>>n>>k;
    ll a[n];
    for(int i=0;i<n;i++)cin>>a[i];
    vector<pair<pll,pll>> v;
    ll sum=0,s=a[0]>=0,l=0,cnt=0,ans=0;
    for(int i=0;i<n;i++){
        if(s^(a[i]>=0)){
            v.pb({{abs(sum),s},{l,i-1}});
            if(s){
                cnt++;
                ans+=sum;
            }
            s=!s;
            sum=0;
            l=i;
        }
        sum+=a[i];
    }
    v.pb({{abs(sum),s},{l,n-1}});
    if(s){
        cnt++;
        ans+=sum;
    }
    bool b[n];
    for(int i=0;i<n;i++)b[i]=a[i]>=0;
    
    sort(v.begin(),v.end());
    printf("\n");
    int idx=0;
    while(cnt>k){
        auto[x,y]=v[idx].fs;
        auto[l,r]=v[idx].sc;
        idx++;
        if(y){
            if(l>0&&b[l-1]||r<n-1&&b[r+1])continue;
            for(int i=l;i<=r;i++)b[i]=0;
            ans-=x;
        }else{
            if(!l||!b[l-1]||r==n-1||!b[r+1])continue;
            for(int i=l;i<=r;i++)b[i]=1;
            ans-=x;
        }
        cnt--;        
    }
    cout<<ans;
}

int main() {   
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

    solve();
}

Compilation message (stderr)

feast.cpp: In function 'void solve()':
feast.cpp:47:19: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   47 |             if(l>0&&b[l-1]||r<n-1&&b[r+1])continue;
      |                ~~~^~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...