Codeforces Round #389 (Div. 2, Rated, Based on Technocup 2017 – Elimination Round 3), problem: (D) Santa Claus and a Palindrome Solution in C/C++

Codeforces Round #389 (Div. 2, Rated, Based on Technocup 2017 – Elimination Round 3), problem: (D) Santa Claus and a Palindrome Solution in C/C++

 

#include<stdio.h>
#include<stdlib.h>
typedef unsigned u;
int cmp(const void*x,const void*y){return*(int*)x-*(int*)y;}
typedef struct S{int*val;u id,vali,vala;struct S*nx[26];}v;
v*alloc()
{
v*x;u i;
x=(v*)malloc(sizeof(v));
for(i=-1;++i<26;)x->nx[i]=NULL;
x->val=(int*)calloc(x->vala=1,sizeof(int));
x->vali=x->id=0;
return x;
}
char S[222222],c;v *p,*q;u alo,pai;
void F(v*x)
{
u i,j;
if(x->id)
{
j=x->id;
for(q=p;(c=S[–j]);)
{
if(q==NULL)break;
c-=’a’;
q=q->nx[(u)c];
}
if(q!=NULL)
{
qsort(q->val,q->vali,sizeof(int),cmp);
if(q==x)
{
for(j=q->vali;j>1;j-=2)
{
if(q->val[j-1]+q->val[j-2]>0)
{
pai+=(q->val[j-1]+q->val[j-2])*2;
}
else break;
}
if(j<q->vali&&q->val[j]*-2>(int)alo)
alo=q->val[j]*-2;
if(j&&q->val[j-1]*2>(int)alo)
alo=q->val[j-1]*2;
}
else
{
qsort(x->val,x->vali,sizeof(int),cmp);
i=x->vali;j=q->vali;
while(i&&j)
{
if(x->val[–i]+q->val[–j]>0)
pai+=x->val[i]+q->val[j];
}
}
}
}
for(i=-1;++i<26;)if(x->nx[i]!=NULL)F(x->nx[i]);
return;
}
int main()
{
u n,l,i,j,k=1;int val;
scanf(“%u%u”,&n,&l);
p=alloc();
for(i=-1;++i<n;)
{
scanf(“%s”,S+k);
for(j=k-1,q=p;(c=S[++j]);)
{
c-=’a’;
if(q->nx[(u)c]==NULL)q->nx[(u)c]=alloc();
q=q->nx[(u)c];
}
scanf(“%d”,&val);
if(q->vali==q->vala)
q->val=(int*)realloc(q->val,(q->vala<<=1)*sizeof(int));
q->val[q->vali++]=val;
q->id=j;k=j+1;
}
F(p);
printf(“%u\n”,(pai+alo)>>1);
return 0;
}

 

 

Infected with TDSS and...

Dealing with TDSS Rootkit Infections and Google Search Redirects Computer...

Ronda Rousey vs. Gina...

The Dream Match: Ronda Rousey vs. Gina Carano at...

Why Everyone is Obsessed with the Portable Door Lock for Travel

Are you tired of dealing with everyday frustrations that slow down your routine? We've all been...

Infected with TDSS and Google Keeps redirecting

Dealing with TDSS Rootkit Infections and Google Search Redirects Computer security is a continuous battle, and some threats are significantly more stubborn than others. A...

Why Everyone is Obsessed with the Portable Handheld Misting Fan

Are you tired of dealing with everyday frustrations that slow down your routine? We've all been...

Why Everyone is Obsessed with the Mini Magnetic Bag Sealer

Are you tired of dealing with everyday frustrations that slow down your routine? We've all been...

Ronda Rousey vs. Gina Carano MVP MMA live blog

The Dream Match: Ronda Rousey vs. Gina Carano at MVP MMA The world of mixed martial arts is currently witnessing a moment many thought would...

Why Everyone is Obsessed with the Electric Spin Scrubber Pro

Are you tired of dealing with everyday frustrations that slow down your routine? We've all been...

Why Everyone is Obsessed with the Mini Magnetic Bag Sealer

Are you tired of dealing with everyday frustrations that slow down your routine? We've all been...

Why Everyone is Obsessed with the Electric Spin Scrubber Pro

Are you tired of dealing with everyday frustrations that slow down your routine? We've all been...

Why Everyone is Obsessed with the Sunset Projection Lamp LED

Are you tired of dealing with everyday frustrations that slow down your routine? We've all been...