This ques is solved by DP , and the main idea behind the DP is (considering testers solution — http://codeforces.net/contest/543/submission/11035704)
that either the new coder in the queue will write zero lines of code z[i][j][k] = z[i ^ 1][j][k];
But then the next line just shook me :
z[i][j][k] += z[i][j — 1][k — a[it — 1]];
By which it mean new coder will only take one line as a[it-1] is bugs per line of code .
Now considering a new coder can write lines more than one . Isn't it a bit wrong solution ?
No, it doesn't mean that the new coder will write only one line of code. That would be the case if the recurrence was z[i][j][k] += z[i-1][j-1][k-a[it-1]], but that's not the case. Pay attention that i stays the same, it's z[i][j][k] += z[i][j — 1][k — a[it — 1]]. It uses a previously calculated value for the current i.
It's done that way to avoid another extra loop for the amount of lines the current coder will write and fit it into TL.
god, thank god ! Thanks a lot .Got it now !