Codeforces Round #378 (Div. 2), Problem: (C) Epidemic in Monstropolis Solution in C

Hi guys , i just tried the Epidemic in Monstropolis problem , hope you might like it .

#include
#include

#define MAXN 500
int a[MAXN];
int b[MAXN];
int partial_sums[MAXN];
unsigned char d[MAXN + 1][MAXN + 1];
unsigned char equals[MAXN + 1][MAXN + 1];
int ans[MAXN + 1][MAXN + 1];
int n, k;
int i, j, r, t;

int dif[2];
int order[2];
char symbol[2];

int main(int argc, char *argv[]) {

#ifndef ONLINE_JUDGE
freopen(“input.txt”, “r”, stdin);
//freopen(“output.txt”, “w”, stdout);
#endif
// read and init data
scanf(“%d”, &n);
for (i = 0; i < n; ++i) {
scanf(“%d”, &a[i]);
}

scanf(“%d”, &k);
for (i = 0; i < k; ++i) {
scanf(“%d”, &b[i]);
}

partial_sums[0] = a[0];
for (i = 1; i < n; ++i) {
partial_sums[i] = partial_sums[i – 1] + a[i];
}
d[0][0] = 1;

for (i = 0; i < n; ++i) {
equals[i][i] = 1;
}

for (i = 2; i <= n; ++i) {
for (j = 0; j <= n – i; ++j) {
equals[j][j + i – 1] = (equals[j][j + i – 2] && (a[j + i – 1] == a[j]));
}
}

// dynamic programming
for (i = 1; i <= n; ++i) {
int border = k;
if (i < k) {
border = i;
}

for (j = 1; j <= border; ++j) {
// int border2 = i – j + 1;
for (r = 1; r <= i; ++r) {
int sub_sum = partial_sums[i – 1] – partial_sums[i – r] + a[i – r];
unsigned char can_be_used = ((r == 1) || !equals[i – r][i – 1]);
unsigned char check = (can_be_used && (sub_sum == b[j – 1]));
if (d[i – r][j – 1] && check) {
d[i][j] = 1;
ans[i][j] = r;
break;
}
}
}
}

if (!d[n][k]) {
printf(“NO\n”);
} else {
printf(“YES\n”);
int curn = n;
int curk = k;

while (curn > 0) {
// print result
int maxval = -1;
int maxindx = curn;

for (i = curn – ans[curn][curk] + 1; i <= curn; ++i) {
if (a[i – 1] > maxval) {
maxval = a[i – 1];
maxindx = i;
}
}

int left_cnt = maxindx – curn + ans[curn][curk] – 1;
int right_cnt = curn – maxindx;

dif[0] = 0; dif[1] = -1;
order[0] = right_cnt; order[1] = left_cnt;
symbol[0] = ‘R’; symbol[1] = ‘L’;

if (left_cnt == 0) {
while (maxindx < curn && a[maxindx] == maxval) {
maxindx++;
left_cnt++;
right_cnt–;
}

dif[0] = 0; dif[1] = -1;
order[0] = right_cnt; order[1] = left_cnt;
symbol[0] = ‘R’; symbol[1] = ‘L’;

} else if (right_cnt == 0 || a[maxindx] == a[maxindx – 1]) {
dif[0] = -1; dif[1] = 0;
order[0] = left_cnt; order[1] = right_cnt;
symbol[0] = ‘L’; symbol[1] = ‘R’;
}

for (j = 0; j < 2; ++j) {
for (i = 0; i < order[j]; ++i) {
printf(“%d %c\n”, maxindx, symbol[j]);
maxindx += dif[j];
}
}

curn -= ans[curn][curk];
curk -= 1;

}
}

return 0;
}

Advertisement

spot_img

How Viral Kitchen Gadgets...

📢 As an Amazon Associate, I earn from qualifying...

Avengers: Armageddon #5 Preview:...

Tension Reaches a Breaking Point in Avengers: Armageddon #5 Marvel's...

7 Reasons This Viral...

📢 As an Amazon Associate, I earn from qualifying...

Can baby deer walk...

Witnessing a newborn animal take its very first steps...

Is the Anker MagGo...

The Long-Term Durability Assessment: 6 Months as a Daily...

Anker MagGo 3-in-1 vs...

The Heavyweight Showdown: Anker MagGo vs. Belkin BoostCharge Pro For...

How Viral Kitchen Gadgets Is Quietly Changing the Game

📢 As an Amazon Associate, I earn from qualifying purchases.Most products in this category disappoint within weeks. Cheap materials, vague instructions, and results that...

Avengers: Armageddon #5 Preview: Trust Issues Intensify

Tension Reaches a Breaking Point in Avengers: Armageddon #5 Marvel's mightiest heroes are once again staring down total catastrophe, but this time, the greatest danger...

7 Reasons This Viral Kitchen Gadgets Is Worth Every Single Penny

📢 As an Amazon Associate, I earn from qualifying purchases.I stumbled across this while desperately trying to fix a recurring problem in my routine....

Can baby deer walk right away?

Witnessing a newborn animal take its very first steps is one of the most heartwarming sights in the natural world. In the wild, however,...

Is the Anker MagGo 3-in-1 Worth $100? Long-Term Durability Review

The Long-Term Durability Assessment: 6 Months as a Daily Driver Spending $100 on a smartphone charging accessory is a significant consumer investment. When budget 3-in-1...

Anker MagGo 3-in-1 vs Belkin BoostCharge Pro 3-in-1: Which Is Better?

The Heavyweight Showdown: Anker MagGo vs. Belkin BoostCharge Pro For the past four years, if an Apple user wanted the absolute best 3-in-1 wireless charging...

Best Protective Travel Pouches and Cases for Anker MagGo 3-in-1

Protecting Your Premium Travel Power Investment The Anker MagGo 3-in-1 Foldable Charging Station is engineered for life on the move. With its collapsible form factor,...

How Fast Does Anker MagGo Charge iPhone 15 and 16 from 0 to 100%?

Putting Qi2 15W Speed Claims to the Test When wireless charging standards make technological leaps, consumer skepticism is natural. For years, marketing promises of "fast...

Does the Anker MagGo 3-in-1 Come with a 40W USB-C Power Brick and Cable?

The Hidden Cost of Wireless Chargers: What’s Really in the Box? In modern consumer electronics packaging, a frustrating cost-cutting trend has become commonplace: the omitted...