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

John McGahern, A Writing...

Irish literature boasts an extraordinary legacy of storytellers, yet...

Stop Buying Cheap Alternatives...

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

Stock market rebound in...

Indian benchmark equity indices witnessed a decisive rebound during...

I Tried Viral Kitchen...

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

Gen Z is spending...

A dramatic transformation is sweeping through the elite corners...

I Tried Viral Kitchen...

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

John McGahern, A Writing Life: Biography of literary giant who understood the human condition

Irish literature boasts an extraordinary legacy of storytellers, yet few have captured the delicate nuances of ordinary existence quite like John McGahern. In the...

Stop Buying Cheap Alternatives This Viral Kitchen Gadgets Is the Real Deal

📢 As an Amazon Associate, I earn from qualifying purchases.After putting the Viral Kitchen Gadgets through a proper 30-day real-world test, I can tell...

Stock market rebound in early trade: Sensex jumps over 400 points, Nifty holds above 22,390

Indian benchmark equity indices witnessed a decisive rebound during early trade, bringing substantial relief to investors following consecutive sessions of choppy price action. The...

I Tried Viral Kitchen Gadgets For 30 Days Here Is the Honest Truth

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

Gen Z is spending more on art than ever before. It’s a key piece of the Great Wealth Transfer, UBS says

A dramatic transformation is sweeping through the elite corners of the global art market. Known largely for digital culture and disruptive social trends, Generation...

I Tried Viral Kitchen Gadgets For 30 Days Here Is the Honest Truth

📢 As an Amazon Associate, I earn from qualifying purchases.If you had told me six months ago that a single purchase would change how...

Live-Action Can You Kiss Me First? Series’ Teaser Reveals Theme Song

Fans of romantic manga adaptations have an exciting new television premiere to look forward to, as the upcoming live-action series based on Yamayade's romance...

7 Reasons This Viral Kitchen Gadgets Is Worth Every Single Penny

📢 As an Amazon Associate, I earn from qualifying purchases.If you had told me six months ago that a single purchase would change how...

Technology Innovation Institute Completes Asteroid-Landing Probe for Landmark Emirates Mission to the Asteroid Belt

In a historic milestone for Middle Eastern space exploration, the Technology Innovation Institute (TII) has officially completed its state-of-the-art asteroid-landing probe. Designed and constructed...