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

Pip Edwards turns heads...

Fashion entrepreneur Pip Edwards knows exactly how to command...

Why Viral Kitchen Gadgets...

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

Sensex, Nifty may gain...

The Indian equity benchmarks, Sensex and Nifty, could witness...

Is Viral Kitchen Gadgets...

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

Taiwan’s Ministry of Environment...

As global temperatures continue to climb and metropolitan centers...

We Tested Viral Kitchen...

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

Pip Edwards turns heads at Derby Day in a very bizarre headpiece – as she shares rare update on new romance with boyfriend Nicholas...

Fashion entrepreneur Pip Edwards knows exactly how to command attention, and her latest appearance at Flemington Racecourse proved to be no exception. Stepping out...

Why Viral Kitchen Gadgets Is Currently Breaking the Internet

📢 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...

Sensex, Nifty may gain 5-8% if external headwinds recede: Baldev Prakash

The Indian equity benchmarks, Sensex and Nifty, could witness a notable rebound of 5% to 8% in the near term provided persistent external headwinds...

Is Viral Kitchen Gadgets Worth Your Money Here Is Our Full Review

📢 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...

Taiwan’s Ministry of Environment deploys digital twin to simulate urban cooling

As global temperatures continue to climb and metropolitan centers face severe heat island effects, urban planners are turning to high-tech solutions to keep cities...

We Tested Viral Kitchen Gadgets Here Is What You Must Know

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

Select Accounts: 12-Ct Finish Dishwasher Cleaner Tablets $13 w/ S&S

Keeping your kitchen appliances operating at peak performance does not have to strain your monthly budget. Amazon is currently offering a steep discount on...

7 Reasons This Viral Kitchen Gadgets Is Worth Every Single Penny

📢 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...

Jay-Z to headline Super Bowl LXI Apple Music Half Time Show at SoFi Stadium

Music history is about to be made once again as global icon Shawn "Jay-Z" Carter has been officially announced as the headliner for the...