Sponsors

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; }

Stop scrolling! This Portable...

Found the best Portable Door Lock Travel Home Security...

STOP staying in hotels...

I used to think my hotel room was safe...

Trending Today: Portable Door...

Check out the amazing Portable Door Lock Travel Home...

STOP Scrubbing Your Life...

Category: Home GadgetsLet’s be real for a second—is there...

🔥 This Electric Spin...

Category: Home GadgetsEveryone is talking about this amazing Electric...

🚫 STOP PICKING UP...

If you’re still tying hundreds of tiny rubber balloons...

Stop scrolling! This Portable Door Lock Travel Home Security is insane!

Found the best Portable Door Lock Travel Home Security on Amazon today. 🛍️ VIEW LIVE PRICE & DETAILS ...

STOP staying in hotels without doing THIS! 🏨⚠️

I used to think my hotel room was safe until I realized literally anyone with a master key card could walk right in. 🛑...

Trending Today: Portable Door Lock Travel Home Security

Check out the amazing Portable Door Lock Travel Home Security on Amazon right now! 🛒 SEE DEALS ON AMAZON ...

STOP Scrubbing Your Life Away: Why This Gadget is Going Viral for All the Right Reasons! 🧼✨

Category: Home GadgetsLet’s be real for a second—is there anything more soul-crushing than getting on your hands and knees to scrub the grout in...

🔥 This Electric Spin Scrubber Pro is a Life-Saver!

Category: Home GadgetsEveryone is talking about this amazing Electric Spin Scrubber Pro.👉 SEE BEST PRICE ON AMAZON

🚫 STOP PICKING UP PLASTIC! The Summer Hack You Need! 💦🎈

If you’re still tying hundreds of tiny rubber balloons and picking up microplastic confetti from your lawn, please stop immediately! 🛑I just discovered these...

Screen Cleaner Kit

Screen Cleaner KitStop everything you are doing, because I have officially found the **holy grail of tech accessories.** 🛑✨ If you are anything like...

ImmunityBio, Inc. Securities Fraud Class Action Result of FDA Warning and 21% Stock Decline – Investors may Contact Lewis Kahn, Esq, at Kahn Swick...

ImmunityBio, Inc. Faces Securities Fraud Class Action After FDA Warning and Stock Decline Investors in ImmunityBio, Inc. (NASDAQ: IBRX) are navigating turbulent waters following the...

Byron Allen wanted to own Paramount. He’s buying BuzzFeed instead. – Business Insider

Byron Allen Shifts Focus: Acquires Controlling Stake in BuzzFeed In a move that has sent shockwaves through the digital media industry, mogul Byron Allen has...