Codeforces Round #386 (Div. 2), problem: (F) Music in Car Solution in C/C++

Codeforces Round #386 (Div. 2), problem: (F) Music in Car Solution in C/C++

 

#include <stdio.h>
#include <string.h>
#define MAX(X,Y) ((X)>(Y) ? (X) : (Y))

int n,w,k,a[200010],t[200010],sz[2],heap[2][200010],ind[200010],pos[200010];
void push(int k,int opt);
int pop(int opt);
void del(int u,int opt);
void up(int u,int opt);
void down(int u,int opt);
int cmp(int u,int v,int opt);
void swap(int u,int v,int opt);

int main(void)
{
    //freopen("music.in","r",stdin);
    //freopen("music.out","w",stdout);
    scanf("%d%d%d",&n,&w,&k);
    int i;
    for(i=1;i<=n;i++)
        scanf("%d",&a[i]);
    for(i=1;i<=n;i++)
        scanf("%d",&t[i]);
    sz[0]=sz[1]=0;
    memset(pos,-1,sizeof(pos));
    int l=1,s=0,st=0,ans=0,p;
    for(sz[0]=sz[1]=0,i=1;i<=n;i++)
    {
        push(i,0);
        s+=a[i];  st+=(t[i]+1)/2;
        if(sz[0]>w)
        {
            p=pop(0);
            st-=(t[p]+1)/2;
            push(p,1);
            st+=t[p];
        }
        while(st>k)
        {
            if(pos[l])
            {
                del(ind[l],1);
                s-=a[l];  st-=t[l];
            }
            else
            {
                del(ind[l],0);
                s-=a[l];  st-=(t[l]+1)/2;
                if(sz[1])
                {
                    p=pop(1);
                    st-=t[p];
                    push(p,0);
                    st+=(t[p]+1)/2;
                }
            }
            l++;
        }
        ans=MAX(ans,s);
    }
    printf("%d\n",ans);
    return 0;
}

void push(int k,int opt)
{
    heap[opt][++sz[opt]]=k;
    pos[k]=opt;  ind[k]=sz[opt];
    up(sz[opt],opt);
}

int pop(int opt)
{
    int ans=heap[opt][1];
    swap(1,sz[opt],opt);
    sz[opt]--;
    down(1,opt);
    return ans;
}

void del(int u,int opt)
{
    swap(u,sz[opt],opt);
    sz[opt]--;
    if( u>1 && cmp(u,u/2,opt)<0 ) up(u,opt);
    else down(u,opt);
}

void up(int u,int opt)
{
    if( u>1 && cmp(u,u/2,opt)<0 )
    {
        swap(u,u/2,opt);
        up(u/2,opt);
    }
}

void down(int u,int opt)
{
    if(u*2>sz[opt]) return;
    int v=u*2;
    if( v+1<=sz[opt] && cmp(v+1,v,opt)<0 ) v++;
    if(cmp(v,u,opt)<0)
    {
        swap(u,v,opt);
        down(v,opt);
    }
}

int cmp(int u,int v,int opt)
{
    int ans;
    if(t[heap[opt][u]]<t[heap[opt][v]]) ans=-1;
    else if(t[heap[opt][u]]>t[heap[opt][v]]) ans=1;
    else ans=0;
    if(opt) ans*=-1;
    return ans;
}

void swap(int u,int v,int opt)
{
    int t1,t2;
    t1=heap[opt][u];  t2=heap[opt][v];
    heap[opt][u]=t2;  heap[opt][v]=t1;
    ind[t2]=u;  ind[t1]=v;
}

15-Inch MacBook Air Thermal...

MacBook Air 15-Inch Thermal Throttling: The Honest Truth About...

Is the 15-Inch MacBook...

MacBook Air 15-Inch Keyboard & Trackpad: In-Depth Review for...

15-Inch MacBook Air Display...

MacBook Air 15-Inch Display Deep Dive: Is It Really...

Can the 15-Inch MacBook...

Gaming on the MacBook Air 15-Inch: Honest Benchmark Results The...

Is the 15-Inch MacBook...

MacBook Air 15-Inch for Software Engineering: Developer's Deep Dive Many...

MacBook Air 15-Inch 8GB...

MacBook Air 15 8GB vs 16GB RAM: Which Should...

15-Inch MacBook Air Thermal Throttling: Does the Fanless Design Slow It Down?

MacBook Air 15-Inch Thermal Throttling: The Honest Truth About Fanless Performance The biggest technical caveat of the MacBook Air 15-inch is its fanless design. No...

Is the 15-Inch MacBook Air Keyboard and Trackpad Good for Long Typing Sessions?

MacBook Air 15-Inch Keyboard & Trackpad: In-Depth Review for Heavy Typists The keyboard and trackpad are the interfaces you interact with for every moment of...

15-Inch MacBook Air Display Quality: True Tone, Color Accuracy & Brightness

MacBook Air 15-Inch Display Deep Dive: Is It Really That Good? The display is one of the first things you notice about any laptop —...

Can the 15-Inch MacBook Air Run Games? Real Gaming Benchmarks

Gaming on the MacBook Air 15-Inch: Honest Benchmark Results The MacBook Air 15-inch was not designed as a gaming laptop — but that doesn't mean...

Is the 15-Inch MacBook Air Good for Software Engineering and Coding?

MacBook Air 15-Inch for Software Engineering: Developer's Deep Dive Many professional software engineers and CS students are choosing the MacBook Air 15-inch as their daily...

MacBook Air 15-Inch 8GB vs 16GB RAM: Which Memory Size Do You Need?

MacBook Air 15 8GB vs 16GB RAM: Which Should You Configure? This is the question every MacBook Air buyer faces at checkout. Upgrading from 8GB...

How Long Does the Battery Last on the 15-Inch MacBook Air? Real Tests

MacBook Air 15-Inch Battery Life: Real-World Test Results Apple claims up to 18 hours of battery life for the MacBook Air 15-inch. We ran it...

Is the 15-Inch MacBook Air Good for Video Editing and Content Creation?

MacBook Air 15-Inch for Video Editing: Honest Creator's Review Content creation is booming, and the MacBook Air 15-inch has become a popular choice for YouTubers,...

10 Must-Have Accessories for the 15-Inch MacBook Air

10 Must-Have Accessories for the Apple MacBook Air 15-Inch The MacBook Air 15-inch is powerful out of the box, but the right accessories transform it...