Submission #934334

#TimeUsernameProblemLanguageResultExecution timeMemory
934334alexander707070Candies (JOI18_candies)C++14
8 / 100
5037 ms4900 KiB
#include<bits/stdc++.h>
#define MAXN 500007
using namespace std;

const long long inf=1e17;

int n,best;
long long a[MAXN],sum,maxs,curr;
bool used[MAXN];

long long calc(int x){
    long long res=a[x];

    for(int i=x-1;used[i] and i>=1;i-=2){
        res-=a[i]; res+=a[i-1];
        if(i-1==0)return -inf;
    }
    for(int i=x+1;used[i] and i<=n;i+=2){
        res-=a[i]; res+=a[i+1];
        if(i+1==n+1)return -inf;
    }

    return res;
}

void mark(int x){
    used[x]=true;

    for(int i=x-1;used[i] and i>=1;i-=2){
        used[i]=false; 
        used[i-1]=true;
    }
    for(int i=x+1;used[i] and i<=n;i+=2){
        used[i]=false;
        used[i+1]=true;
    }
}

int main(){

    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }

    for(int i=1;i<=n/2+n%2;i++){
        maxs=-inf;

        for(int f=1;f<=n;f++){
            if(used[f])continue;

            curr=calc(f);
            if(curr>maxs){
                maxs=curr; best=f;
            }
        }

        mark(best); sum+=maxs;

        maxs=0;
        for(int f=1;f<=n;f++){
            if(used[f])maxs++;
        }
        if(maxs!=i)cout<<1/0;

        cout<<sum<<"\n";
    }

    return 0;
}

Compilation message (stderr)

candies.cpp: In function 'int main()':
candies.cpp:68:27: warning: division by zero [-Wdiv-by-zero]
   68 |         if(maxs!=i)cout<<1/0;
      |                          ~^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...