# ZCO 2015 Discussion

I appeared for the afternoon session. I’m pretty sure I’m scoring a big old zero. I ended up wasting too much time on Rectangles, and had very little time left for the Covering. I submitted what I think was the correct solution at the very last moment, but the server shut down while it was compiling. I don’t think it’ll get evaluated.

Here’s are links to the problems:-

Rectangle

Covering

Can someone share the problems from the morning session?

I was able to think up a brute force algorithm for Covering, but I don’t think it would’ve finished running within the lifetime of the known universe.

Hey people,

I appeared in the morning session of ZCO. It was good, I won’t say that it was very tough, but yah it was difficult enough. Much more of the problem was posed by their servers which kept getting Critical errors time and again.

Here are the two problems:

BREAKUP(this one is the tougher of the two problems)

VARIATION(I was able to solve this one)

I tried solving the “BREAKUP” problem and came up with an apt algorithm but that failed many test cases in which the palindromic sequence started from the middle or after that. I would love if someone could provide a valid solution. For that problem.

And about the Afternoon session, to me, it looks a lot tougher than the morning one, and the Rectangle problem is like, really difficult…

@Organic-Shilling: Can you explain it a little more… Also note there can be cases like

1> The largest area rectangle lies between two points

2> DP doesn’t seen to be a valid choice since optimal substructure can change due to new points

3> Greedy is also invalid

4> Graphs and trees seem irrelevant

If I have missed a point please correct

EDIT: Sorry I forgot to state that I sat for the dreaded afternoon test and I was asking the solution for the problem rectangle.

Solutions to Morning session : BREAKUP #include <iostream>#include <algorithm>using namespace std;int N; //Nu - Pastebin.com .VARIATION #include <iostream>#include <algorithm>using namespace std;int main() - Pastebin.com . 1st Problem required DP and the second could be solved easily. I have secured 100% so the solution should mostly be correct. Ask me if you have any doubt.

I sat for the morning exam… I think the morning session was a tad easier than the afternoon session. Apparently I got 200, but they say the code will be provided with additional test data later, so I’m not really sure. Has anyone seen getting his scores decreased after the code was fed by the additional input? Anyways, here are my solutions, which hopefully work.

1: This is a nice DP exercise. I made an array ans[n+1], where ans[n]= 0 and ans[i] is the answer for the sequence {a[i], a[i+1], …, a[n-1]}. Now, it’s easy to see that ans[n-1]=1 and ans[i]= min(ans[j]: j varying over all integers >=i such that the sequence {a[i], a[i+1], …, a[j]} is a palindrome)+1. We can thus compute a[i] for all i<=n-1 recursively, and our answer is ans[0]. Overall complexity: O(n^3).

2: This is just trivial binary search. First, sort the sequence. Then, for all 1<=i<=n-1, compute the smallest index j satisfying a[j]>=a[i]+k using binary search, and add n-j to the answer. Overall complexity: O(n log n).

Also, the server slowing down was a real big problem. >_< Did anyone else experience it too?

3 Likes

Solution to rectangles. Disclaimer: I gave the morning session so I am not 100% sure
1.Sort all coordinates by y- coordinate
2.Pick the one with the lowest y coordinate.
3.The area covered by this rectangle is y*width, width = 10000 for 1st case.
4. Add its x coordinate to a fresh list.
5.Now we have two subproblems, One right to the marked x-coordinate and One left to the marked coordinate
6.Repeat the procedure from 2 till here, keeping in mind that the limits have changed for the width. Also if there are two coordinates with same y add both of their x coordinates to the maintained list.
Has anybody got 100% in this question ? I want to see their code badly. This was a very good question I wish it was in the morning. Our session was boring. I was doing it half minded.

Well there is a catch here… The vertices can lie on the edge of the rectangle. Moreover if you add point one by one in a order, you may not count a newly created area that you assume you have. So DP seems out of question
(I initially thought that we redistribute the area disturbed by new points (added by ascending y coordinate) but failed))

It seems I am doing something wrong here. I meant the area which you get from bottom top approach

The morning session was way easier.
One was a DP and the other was really also easy.

Afternoon the covering was a greedy.

But the rectangles one
… Ugh it was so bad.
I unfortunately gave the afternoon session and got only 1.

Wish I’d given the morning one.
I really I hope I get through

I had the option to choose between the morning and the afternoon session. I chose the afternoon session. And now I absolutely regret it. T_T I spent the whole three hours sending numerous solutions modifying minute things and tweaking but nothing worked. And the morning session problems do seem a lot easier. At least that’s what I feel after reading the problem statements.

1 Like

I did the cover question very easy algorithm . got it in just last minutes . was doing a very bad bad error.12 attempts to reach a 100
Shit man seriosly should have given the morning question . Altough i was happy afternoon session had an adhoc problem .

Dont you think that the problems that appeared in the second session were many times more difficult than that of the first half. I think there ought to be more fairness in the evaluation procedure. Infact I think we ought to file a petetion against this. Please mail all your grievances to ico@iarcs.org.in also, we should get together and do something about it. All those who are like minded please email me: soumadeep.saha97@gmail.com
Thank you
A victim of ZCO afternoon session

@deepcoder18: You are right!

The cutoffs won’t be different for afternoon and morning sessions right?

I gave the afternoon session … @Organic-Shilling For Rectangles, I tried exactly the same method that you posted but it gave me correct in only two sub-test-cases so my total score was zero. I was pretty sure I got covering right, but here, my solution must have been far too long as I got TLE in all except one, which was the very first one which gave correct.

Covering can be solved with a greedy approach where for every interval you check whether there is any number that is already picked in some earlier chosen interval such that it lies between the current interval and if not you always add the rightmost number of the interval to the set of picked numbers.
Complexity: O(n^2)

P.S Sort the intervals in increasing order of its rightmost number.

3 Likes

Does anyone know when the results are going to be out?

This is my code for variation . It fetched me 100 pts in the grader but i want to know whether its

full efficient or not .( PLEASE COMMENT )

#include

#include

using namespace std;

int main()

{

ios::sync_with_stdio(0);

int n,k;

cin>>n>>k;

int a[n];

for(int i=0;i<n;++i)

cin>>a[i];

int c=0;

sort(a,a+n);

for(int i=n-1;i>=1;i–)
{

for(int j=i-1;j>=0;j–)

{

if(a[i]-a[j]>=k)

{

c=c+j+1;

break;

}

}

}

cout<<c;

return 0;

}

guys this was my code for covering .i got 100 points (till now) dont now future .I can explain my code if theres a problem .
please tell me if any case is coming wrong

2 Likes