Codeforces, привет!
Я рад анонсировать Looksery Cup 2015, над подготовкой которого работала целая команда наших сотрудников, каждый из которых внес огромный вклад: Sfairat, olpetOdessaONU, Sklyack, MrDindows, Rubanenko, Krasnokutskiy, 2222, Maxim, Avalanche, Igor_Kudryashov, Kepnu4 и я. Отдельное спасибо координатору Zlobober за помощь с задачами и советы, а также Delinur за перевод условий.
Мы подготовили для вас 8 задач различной сложности, которые будут расположены в случайном порядке. Раунд будет длиться 2 часа 30 минут и пройдет по правилам Codeforces с плавной динамической стоимостью. Очень надеемся, что задачи понравятся и вы получите удовольствие от соревнования, а мы получим мало кларов :)
Топ-200 участников соревнования получат именные футболки с их хендлами на Codeforces:
Как сообщалось в предварительном анонсе, победитель соревнования получит возможность поехать в полностью оплаченное путешествие в Сан-Франциско.
Кроме этого, топ-15 участников получат Oculus Development Kit 2.
А участники с 16 по 50 места — гаджет Ollie.
Также хочется выразить большую благодарность MikeMirzayanov и всем, кто трудится над Codeforces и Polygon — ваш вклад в образование и развитие IT сферы трудно переоценить, я думаю все со мной согласятся.
UPD. Раунд будет рейтинговым для обоих дивизионов.
Ждем вас завтра,
Looksery Inc.
UPD3. Появился разбор
UPD2. Рейтинг будет пересчитан сегодня, но завтра могут произойти небольшие изменения, не пугайтесь
UPD. Раунд завершился, всем спасибо, что приняли участие. Поздравляем победителей! Окончательные результаты будут объявлены в течении суток, после определения читеров. По предварительным результатам top-15:
Just a Suggestion :: Keeping say 150 Tshirts for top 150 Performers and 50 for the randomly selected ones from top 500 might be more ATTRACTIVE .
you got nailed dude..stop beleiving in luck :P
maybe randomly select one from top 500 for trip to San-Francisco. xDD LOL
Top-200 competitors will get t-shirts with the handle at Codeforces.
Winner will get opportunity to have a prepaid trip to San-Francisco.
Besides, top-15 competitors will get Oculus Development Kit 2.
And competitors from 16 to 50 — gadget Ollie.
Will you participate in this contest?!!
very nice ;) I am with you
What Do We Want?? Premium Rating System ... Premium Rating System ...
i'm agree with you . why minus?
Can I ask for other words to be print .___.
You want "Sand Bag"?
Last thing we want to happen is people creating fake accounts to get T-shirts name of their choice
Please ignore this comment. It initially contained an incorrect argument. I thank kingofnumbers for correcting me.
Well, you forgot that if they taken part with fake account then the rating of that account will increase more than if they taken part with their real accounts and this will make others get less higher ratings
Hmm. I was under the impression that ones rating change was only a function of ones position and ones initial rating but it turns out that was incorrect.
Sorry about that.
It would still be nice if people were allowed to have a choice in the text that got printed though.
Nooo. Imagine two Div1 contests. One where 500 violets take part and one where 500 reds take part. Your possibility wouldn't make sense :P.
Even though this comment is not relevant to the discussion but I would like to inform you that The rating calculation for unrated people is a little different . Unrated contestants have an initial expected rank of n / 2 where n is the number of people taking part in the contest. So in a contest consisting of 499 red coders and 1 unrated coder if the unrated coder gets a rank worse than 250 then his rating would drop.
I guess here he was not referring to rating or anything.
He just mentioned "to get T-shirts name of their choice"
nice t-shirts !!
Can you please give me the t-shirt for nothing :(
stop begging...start winning :P
I am just trying to comment something funny but alas it becomes too funny to give up vote :D
Thanx to Looksery and Codeforces team for that opportunity and prizes are very much tempting . Hope to have a great round with high rating everyone :) May the best win :)
exactly
Does it have pretests or not ?
Yeah, it will be a common rated CF round, but with problems shuffled and smooth dynamic scoring... and it will last for 2:30... and eight problems...)
Ради майки с таким царским ником можно и написать... Как думаете, протрезвею до завтра?
А еще кстати авку было бы круто напечатать, ну так
Maxim is not orange anymore!
That's probably because this blog was written a few days ago as a draft when he was orange. For example for round #299, I wrote the announcement blog as a draft when I was red and I remembered to fix it just when I was publishing it.
so the draft was made before round #300 (i.e before about 40 days) , why would one write the announcement before 40 days of publishing it?
Well, the announcement that the round was going to be held was made around 3 months ago so it is plausible that the draft for this post was written long ago too.
that blog wasn't an announcement , it was the reward of those who donate to CF with at least 450$ (publishing a blog on the main page)
Or, Monyura did this to make this blog prettier and only use orange and red colors in it.
I agree , the list of coders looks really pretty :)
But Rubanenko was not red for quite some time, so it is in fact pretty old :P.
Perhaps that part was just copied and pasted from the original announcement, with the dates when they had such colors, and then edited a bit.
Didn't think I'll have to say it again :)
Btw — 8 tasks and 2h 30 min :o? Overwhelming a bit. Either most of them will be very easy or people will not solve too many of them :P.
Just like round 300 and people managed to solve a lot of problems in it. Since it has problems for both divisions you need 7-8 problems to get a good spread.
... which definitely was not properly balanced...
Why? As long as you solve the first three problems in less than 30 minutes (most did) you got more time for the last five than in a normal div 1 round.
That's not what "balanced" means. The gap in number of solutions between F and G was huge in comparison to all the remaining gaps between successive problems. That means clogging up of the many people who solved A-F.
When there's a huge jump in difficulties, more time doesn't help at all. It just means much more people will solve F, while not so many more will also solve G.
How would removing problems help with that?
"... which definitely was not properly balanced..."
"Why?"
Well I explained why that round wasn't properly balanced. I guess the point is that many problems aren't enough to get a good spread, you need problems with well-spread difficulties to get a good spread.
Ah well, but 8 problems isn't too much for 2.5 hours at least since it would have been fine if G were like a normal D instead of a normal E.
See, there were no problem at all with this contest, most reds solved between 5-7 problems and the balance weren't poor either.
"balance weren't poor either", hahahaha, very funny xD. All problem beside E and F were really simple. They took me all <=16 mins, while I couldn't get AC on F for 1,5h >_>. There was no typical "C" problem.
Even F wasn't that difficult, though it was one of those problems in which if you approached it the wrong way you'd have a lot of trouble, so it fit as the "slightly harder" problem.
(Hint: it's easy to count how many valid (l, r) intervals cross a certain point M)
I know how to solve it, but couldn't code it properly :/.
You can't really call B and C easy...
B is piece of cake , while you find an index i such that the guess is true then invite i.
the same problem already exist on codeforces but I'm lazy to search for it
Yet it took you over two hours to get it...
I didn't read B in early time because of the low number of who solved B. but when I did I solved it immediately
the constrains which guarantee that f[i][i]=1 for all i is a very big hint
Just look at how many solved it, just because it is easy to code doesn't mean that the problem is easy.
I didn't say easy to code, I said easy idea and that hint led me to that idea
BTW, here is the problem link, B already exist on codeforces as I told you.
So the point is that it is easy since you have seen it before?
it's easy because it's easy , I only remembered that it already exist later after I solved it
Can you provide a link to the problem in contest page? Problemset is currently blocked.
I didn't think the block will continue for that long , here is another link anyway
How can you prove its correctness? What if you invite all of them, but still one of the guesses is still true? What is the correct order of processing the guests?
you only invite person i whenever the guess him is currently correct so when you invite person i the number of messages he will receive will be more by one than the guess so it will never happen again that the guess about him is correct.
so if I had to invite all of them then I am sure that the number of messages each one of them have got is bigger than the guesses.
also the order or inviting is not important
For any set of invited people, among all people where Igor guessed correctly, call the one with the lowest ID as guilty.
Now, start with the empty set of invited people; call this an invitation set. As long as there is a guilty person, invite that person as well, and call the resulting set of invited people as another invitation set. If there is nobody that's guilty, invite a random person. We keep doing this until all people are invited. This forms several invitation sets; to be precise, there are n + 1 of them, one of each of size 0, 1, 2, ..., n. We claim that at least one of these possible sets are free of guilty people.
Note that each person A can only be guilty in one set; at the first moment A is guilty, A is immediately invited into the party, and thus the number of messages that A receives exceeds Igor's prediction. Since this number will never decrease (we never reject an invited person), A will always get more messages than Igor's prediction afterwards, so A will never be guilty any more.
However, there are n + 1 invitation sets in total, but only n people that can be guilty. By (generalized?) Pigeonhole Principle, one of the sets will be free of guilty people. This is the set we want.
To make it constructive, instead of picking a random person when there's no guilty people, stop and take that set instead; we are guaranteed to stop for the same reason as above. This is the basis of my submission.
combined division again, what are the chances to be one of the top 200 :P
I'm more interested in how high the chances to get +200 are. Also chances to get +400 and +600. With this number of participants and a combined round...
We have 737 red coders now, let's wait and see how will this number change tomorrow :)
P.S. And also 46 people with IGM, let's also check this one after round.
Opps, Red Alert!!
743/48, not so bad. Did they finally resolved issues with inflation? :)
Oh, you made my day! I thought I had become red (for the first time) just because of rating inflation :')
Wow, eight problems! I think many hacks will be in this contest.
unfortunately your comment has been hacked :D
If I stay in the same room with you today, I will hack you :D
Кажется случайный порядок задач вносит погрешности в результаты. Это нормально при команде из 3-х человек и 15 часах времени (на команду), и сомнительно при 8 задачах на 2.5 часа (+ падение стоимости, а не штрафное время).
Да, 15 часов на команду обычно хватает, чтобы решить всё... а еще, думаю, хватит времени поспать, поесть два раза и опоздать часов на 10 к началу соревнования (в случае Гены — можно опоздать на 12 часов).
Еще ты забыл про взломы, благодаря которым, даже в случае одного успеха, можно не хило вырваться вперёд.
Если задачи короткие, то норм :)
I love green and also the codeforces logo :)
By the way, I have a feeling that this needs to be explicitly expressed by someone — I think that this contest has the best prizes on CF ever! There are 200 (!!) T-shirts and they are personally signed (!!). I don't know what these Oculus Development Kit do (and don't have time to delve into it), but they look cool and valuable. And these thingies to people from places 16-50 looks completely useless but amazingly funny, which makes me consider whether I should do some unsuccessful hacks if I will see that I have chances for being in TOP15 :3
"makes me consider whether I should do some unsuccessful hacks if I will see that I have chances for being in TOP15 :3"
#justgrandmasterthings
Thanks for the clarification Swistakk – before reading your comment I thought that "competitors from 16 to 50" means people aged between 16 and 50, which raised a lot of questions :)
makes me consider whether I should do some unsuccessful hacks if I will see that I have chances for being in TOP15 :3
Consider this case: You are in top 15, you attempt some unsuccessful hacks on purpose to be in 16-50. In system testing one of your solution fails and you are not in top 50 anymore. Then you notice without that unsuccessful hacks you would be in top 50.
This case is very sad. And if something like this ever happens to me, I'll say goodbye to competitive programing for good.
Yeah, that was rather just joking :P. Btw saying goodbye to CP because of such a reason would be pretty stupid xD.
If such case happens, CP would say good bye to you
Can I ask how many problem in this contest ?
8
Thank you ^^
340 red coders registered to contest. No chance for experts
Never give up! Impossible is possible!!
If someone can win, then you can also win. Always be optimistic.
there was never
see there is an expert under 200 rank in final standings :)
The time is rarely suitable for coders in China. :) PS. The College Entrance Examination will start tomorrow morning. Good luck! God bless us!
Rubanenko почему-то красный в анонсе.
Это сделано из уважения к его вкладу в подготовку контеста :)
У меня это в контракте прописано.
Today's contest is a big opportunity for Div2 participants to become members of Div1.
how ?
If you do better than Div1 contestants, you'll get a lot of rating.
Izi problem, izi life
Izi futbolka, izi life
Hard problem :) hard life :)
So great t-shirts *-*
expecting unusual rating changes in this contest like: Specialist -> Candidate Master; Expert -> Master ; Candidate Master -> International Master, etc.
And suddenly International Master -> Specialist. The most unusual, I think.
Generally in div 1 + div 2 contests maximum +ve rating change is around +400 but maximum -ve rating change is only around -135. So I don't think you are correct. :P
I'm going to be on airplane during contest time..
But airplane has (unstable) wifi..
Not sure if I should participate..
You should try!
You should catch!
Create fake account xD
Well sure I could do that, but then how to avoid following conversation:
(of course there's option like creating account I_love_Hoang_Yen_2, but it would be too obvious :)))
You could have created an account "I_love_cutest_girl_in_world" and tell her that it is obvious that is about her, nobody will have strong suspicions about you and that T-shirt would be more 'universal' :pp. That means that it won't become out-of-date whatever the future will be xD.
Do you think that such lame trick can not be seen through by the eye of a girl? :p
I_love_you written t-shirt would be nice present to your girlfriend...
tourist began preparing to travel to San Fransisko. ;)
With his Tourist written t-shirt. He is really tourist in San-Francisco xD
The worst thing about random order is trying to find the "A" problem at the very beginning. But today I have a secret weapon: https://www.random.org/
Now it's not secret anymore :P
seriously speaking, I will tell you my strategy in such situation you might like it:
I open all the problems, then I read shortest problem statement first then second-shortest and so on until 10 minutes after the starting time I open the dashboard to see if some problems are solved if yes I read them then I solve them until I finish solving them ,the difficulty of the problems will be revealed.
that will have random order at the contest
Painful :((
I think this time tourist can't make him first :/
may be other one will be the first ;)
scoring dynamic? ):
random problems? ):
I think that Problem D is the easiest problem in this contest (:
And that's because... ?
because I am lucky (:
Oh, don't make us to reshuffle them again!
Ok (: I'm sorry
Hello everyone !!
I hope high rating and good luck for everyone.
I have a question .
I have heard a lot of people said when the two division participate together is easier will have a high rating.
Why ??? Anyway I thank for you answer in advance!!
We simply want more people to have high rating ;)
2 reason i think (at least for div2 participant) : 1. less "strong" unrated coder will participate (iykwim) 2. div2 participant can defeat div1 participant which can gain more rating
Does random order mean that it is shuffled by a computer and is completely random or are they put in an order developers want them to be?
Sometimes developers' decisions are more random than the computer's ones
Когда уже другие элементы одежды будут в качестве призов довать? А то у меня маек уже хватает, а вот шорт, например, нет. :)
some random t-shirts for us peasants would be much appreciated :)
finally 5808 registrants :)
Can you delay contest 5 min to allow for more registrants?
happy coding :)
I love the prizes! GL & HF to everyone!
hey guys look at unknownuser96 in room 118 link
(╯°□°)╯︵ ┻━┻
Задачи очень интересные! Спасибо за контест! :)
D problem author,great problem, like!
На чем С ломали?
У многих не заходило 2 2 1 2
Подтверждаю, пятерых так взломал.
5 3 1 1 2 2 1
На случае, когда K == N, мне кажется. Во-первых, потому что меня так взломали, во-вторых, этот случай легко можно было разобрать, смотря в код человека, который взламываешь. Смотришь на исход программы взламываемого, и там уже видно.
Hard would be an understatement , at least for poor coders like me
How is C solved? I could only think of a O(N2) DP solution with O(N) space complexity.
A lot of casework. Whoever goes last will generally win, unless it is possible for Daenerys to burn all the towns with odd number of residents, it is possible for Daenerys to burn all the towns with even number of residents and k is even, or it is possible for Stannis to burn all the towns with even number of residents and k is odd.
Unfortunately, there is also the sad final case of n=k, in which case nobody gets a turn and so there is no "going last"; in this case answer simply depends on number of towns with odd number of residents.
Do it in O(1). There's a categorization (although not really simple) based on the number of cities with odd/even populations (called odd, even respectively), something like this (not sure, though):
I hate the case n = k. Found it as challenging, killed two solutions, but mine is still wrong. Stupid problem, a lot of points and much more stupid bug. :(
Unfortunately, there is also the sad final case of n=k
"Sad" is very polite word for this case :)
Would you please explain your third case?
How does it is depending on the pairity of k?
If all even cities can be destroyed by one player, then all remaining cities are odd; there are exactly k of them. By checking the parity of k, we can check which player should destroy the even cities; if k is odd, then Stannis should destroy them (and Daenerys can't do anything to prevent that), while if k is even, it's the other way around.
Just coded stupid O(n2) solution to see patterns and then checked clever O(1) solution by the stupid one.
upd. Too bad, it failed. But I think the right approach should be like this.
Call the number of odd houses is odd, and the number of even houses is even
If Stannis can burn all the even houses before the game end, he can force Daenerys to burn only the odd houses in later move (after all even houses run out), and if the number of odd houses after the game is odd, he will win. The condition to do this is (n-k+1) div 2 >= even and odd-(n-k-even) mod 2 = 1.
If Daenerys can burn all the odd houses before the game end, he will always win. The condition to do this is (n-k) div 2 >= odd.
In all other case, the person who end the game is winner. Why? Because in all move (except the final), the players can make opposite move to each other (if Stannis burn odd house, Daenerys will burn even house and vice-versa). And the player who do the last move can just perform the move that give him victory.
I solved that with DP , state is player , CitiesToBeDestroyed , RemainingOddCities
Note that RemainingEvenCities can be omitted since it can be drived from the other parameters .
Till now it is O(N*N) , since both players will play optimally and each one of them will try to cancel each other move , I removed x odd city & x even city & 2 * x CitiesToBeDestroyed before calling the DP ( left at most 128 for the DP to figure out a solution )
Thus it will be O(N * 128)
Take a look at my solution 11465922
BTW , I got WA on pretest because of a logical mistake , so I increased the factor when I was debugging . 128 is too much (8 is enough to get AC) ==> O(N*8)
Can you please explain more on how you came to the intuition that you can remove x odd cities and x even cities before calling the DP(leaving at most 128 for the DP to figure out a solution) ?
KareemMohsen and MostafaG submissions for last round look suspicious.
11467747 = 11467830 11461749 = 11467680
P.S. It's impossible to view these submissions until the end of contest, but I was in the same room with them and
Anybody solved D with fenwick tree ? I couldn't.(
I don't understand problem D ! I work my tasks about 1 h ( first 10 minutes and last 50 ), all other time I spent for reading D.
Optimal solution is O(n * m)
I will cry now (. What was the solution for D?
Let b[x][y] be 1 if (x,y) is 'W', -1 if it is 'B', 0 if out of bounds.
Increase answer by one for every (x, y) in board such that b[x][y] != b[x+1][y] + b[x][y+1] — b[x+1][y+1].
why? please explain more ...
Every rectangle with bottom-right corner (x,y) is added a number of times Rx, y to the final answer (it might be 0 if we never use it).
Because you're only doing linear operations, the final answer for any sum of rectangles is Cx, y * ax, y, where ax, y is the value on the board at position (x,y) and Cx, y is the sum of Rx, y for all rectangles that contain (x,y).
But how can we calculate Cx, y easily? Well, except for the rectangle with bottom-right corner (x,y), all rectangles that influenced (x,y) are the ones that influenced either (x+1,y) or (x,y+1). To eliminate double-counting, remove the ones that influenced both (x+1,y) and (y,x+1): the ones that influenced (x+1,y+1). Our final result is: Cx, y = Rx, y + Cx + 1, y + Cx, y + 1 - Cx + 1, y + 1.
To get the sum we're looking for, we want final Cx, y to be equal to bx, y for every (x,y), so from the earlier equation Rx, y = - bx, y + bx + 1, y + bx, y + 1 - bx + 1, y + 1.
After you calculate all Rx, y, count the ones that are not zero, and that's your answer.
Is this based some kind of standard method? I'm trying to understand why this problem was solved by so many.
O(n^2*m^2) algorithm was enough for this problem.
I used a similar method. For cells not lying on the right or bottom border, I considered all cases in which that prefix rectangle would be used atleast once (how many times, does not matter as we can just multiply the required integer, after using it once). It will always be used unless its right, bottom and bottom-right cells are similar to it or exactly two of them are different and are adjacent.
For the bordering cells (right or bottom border) they would be used if they are not equal to adjacent cell on the border.
Please look at my submission for a better understanding. Solution complexity if O(n*m).
11473484
My solution is O(N2M2). I think 2D Fenwick Tree is unnecessary since N2 * M2 ≤ 108
Please explain your approach.
The same here.
Init sum for every pos as 0.
Iterate for every cell from bottom-right corner to top left corner.
If our mask at this pos == 'W' && sum for this pos != 1:
sum of every pos from this to top left corner += 1 — d[i, j]
result++
If our mask at this pos == 'B' && sum for this pos != -1:
sum of every pos from this to top left corner += — 1 — d[i, j]
result++
i was unsure whether O(n^2*m^2) would pass. hence i implemented an O(n^2*m) solution.
Why O(255025000000) operation is not TL ? 11473557
Was Problem E just this paper? Here
Your link seems to be broken.
http://theory.stanford.edu/~megiddo/pdf/circspr.pdf
Oops, it converted one of the backslashes into 2 backslashes. Fixed.
here
That paper seems much stronger than what we need. Also, it seems it may be numerically instable, and also seems a bit hard to implement.
I believe there's a way to do this using only integers, though the implementation is still very tricky since there a lot of special cases. My approach was to make the points (x,y,x*x+y*y), then find whether or not these two sets can be separated by a plane. This involves checking whether or not the two 3d convex hulls intersect. The implementation is made slightly simpler by allowing quadratic solutions. Unfortunately, there are a lot of degenerate cases when things are coplanar, and I wasn't able to deal with all of those in time.
EDIT: Actually, the paper seems to talk about my approach in section 4. Should have read it a bit more carefully.
I tried to compute the smallest enclosing circle for both sets and check if the other points lie outside this circle but I got wrong on #10. Is this even correct?
Interesting problems . Thanks for good contest .
I understand you want to introduce your company's work in the statements. But WTF was problem D's statement?
I agree with you, THe problem D was very difficult understand I needed more than 45 min in order to understand MY english is bad I think that was that. but is the first time that happened this. did Someone have the same problem??
English does not matter, I understood the problem and sample test cases after reading for 30 mins, yet I could not solve it
I spent 30 min trying to understand the statement and the result I didn't , spent 2 mins to understand the problem from sample explanation .
Классные задачки! Хотя, кроме F и E все простые, над всеми пришлось подумать.
Hoping for a systest miracle: for enough people to fail for 278th to get to top 200
Winner is from North Korea. Hmmm... Congratulations to vepifanov with a trip to San-Francisco. :P
winner is tourist :D
sure
How to solve H? I've spent literally the whole contest on it :( Still getting WA#4, and I have no idea why.
overflow
Binary search; when you have fixed some answer, you have intervals of possible values for a,b,c,d in matrix B. From those invervals you can get invervals for values of ad and bc. Now you only need to check them for intersection.
Now you only need to check them for intersection
Would you please explain it?
In this problem, how can I tell from the values of ad and cd that our current answer is valid? I don't understand it.
Assuming answer is equal to X, you can pick any value in range [A-X,A+X] (I denote values of original matrix by A,B,C,D here) for a and any value in range [D-X,D+X] for d. This gives you some range [L1,R1] for possible values of product of a and d. By picking proper values for a and d in your new matrix you can reach any resulting product from that range. In the same way you can get range [L2,R2] of possible values for product of b and c. You are interested in picking such values for a,b,c,d that ac-bd=0, therefore ac=bd, which implies that [L1,R1] and [L2,R2] have a common point. I hope my code (11475874) is clear enough.
Yep got that. I was trying to make the matrix B. That was my mistake.
Thanks.
Yup, same situation. I figured out how to solve it if (a+b+c+d)=/=0, but then got stuck. Really frustrating when you see the number of people that solved it...
I feel your pain... Spent whole contest on H, in the end I ended submitting random calculations until this passed pretests, but I have absolutely no idea why:
I can't understand why this works. My solution had 8 cases:
1) (a+x)(d+x)=(b+x)(c+x);
2) (a+x)(d+x)=(b-x)(c-x);
3) (a+x)(d-x)=(b+x)(c-x);
4) (a+x)(d-x)=(b-x)(c+x);
5) (a+x)(d-x)=(b+x)(c+x);
6) (a-x)(d+x)=(b+x)(c+x);
7) (a+x)(d-x)=(b-x)(c-x);
8) (a-x)(d+x)=(b-x)(c-x);
This solution don't work. But when i sent just first 4 cases have AC.
Why?
Example, 5th case: ad-bc=2*sqr(x)+x(b+c+a-d), when discriminant>=0 we can find new answer. If I am wrong please explain, all the time I spent on this task.
UPD when Discriminant > 4*(10e18) my solution broked.
My solution worked with above 8 cases.. I was trying to do the same during contest..but forgot to add the case of 0. After contest i added the case to handle 0 and got accepted.
I am not positive this works but basically binary search. The truth condition is if by changing each of the elements by this much you can get the opposite sign of the determinant. Maybe this fails somewhere but I don't think so.
Idea was correct, but WA50 because of precision issues I think. Rewrote it with BigDecimal and now it works. Lesson learned I guess.
Me too. ;-(
I suspect that there might actually be a simpler solution to this. Note that in the samples, for B each element differs by the same amount from its corresponding element in A (that is, |1.2 - 1| = |1.8 - 2| = |2.8 - 3| = |4.2 - 4|). I tried proving it, although I don't think it was rigorous or even worked. However, if it holds, then it's just checking 24 cases: add or subtract a number t to each element in A (that's where 24 comes from), compute its determinant (a quadratic expression in t), and find its solutions. Take the one with minimum magnitude among all found solutions.
I can't prove it, but I can say that (with this testset) it worked, since that's exactly the approach I took. See 11469632.
Yes, I also used the same approach and passed.
The idea is that if we fix the top row of the matrix B to be x, y, we know the bottom row is in the form xt, yt for some t; since the graph of is a polyline (several line segments/rays joined together), the minimum must be found at an intersection, where |c - xt| = |d - yt|. Generalizing that this must happen to all the elements at the same time is the shaky part.
Did it work?
Check my O(1) solution for H. I just tried all the possible combinations of +x or -x at all the places of the matrix. SOLUTION
Can u plz explain ur solution in detail. Sorry for inconvenience.
explain plz?
For the record, here is another constant-time solution for H, except that it relies on arbitrary-precision arithmetic to get the accuracy to 1e-9: 11493234
The explanation is based on similar thinking to the editorial, treating the matrix as two vectors. After drawing some pictures, we need to find a line passing through the origin (i.e. this is the degenerate matrix B) such that the distances along diagonal lines from the the vectors to this line are the smallest possible (i.e. the largest of them is minimised). Diagonals are usefully dealt with by rotating 1/8th turn, then it becomes a matter of dropping down vertical lines from the vectors onto a line of the form y = mx. And the rest are details.
But I'd really like to know if there is a simple reason why prateek_jhunjhunwala's solution works, or is it just a coincidence?
How to solve problem D? Is it possible to solve O(n*m) is the optimal solution?
Yep it's possible to solve in O(n*m). Though I 've solved it after Contest. my O(n*m) solution 11478809 .
you just do not need to update the whole prefix rectangle. :)
How did you came up with O(1) solution of pH ? will explain it for me ?
or here You can also see my code 11506983
Congratulations I_love_you ! will be nice t-shirt with this handle ;)
Test is ended. Please give me good score~~~
Задачки идейные и в целом хорошие, спасибо. По много минут думать над G и H, чтобы потом за две минуты закодить -- приятно.
Кажется, правда, между E,F и остальными задачами получился большой разрыв по сложности, о чём ещё перед контестом разные комментаторы писали.
Обменялись любезностями.)
=)) Да, забавно получилось. Я увидел, что меня взломали, и пошел мстить)
242D - Dispute
THe problem D was very difficult understand I needed more than 45 min in order to understand MY english is bad I think that was that. but is the first time that happened this. did Someone have the same problem??
I finished problem A then spent the rest of the contest trying to understand D, I jumped to some other problems as well but since so many people were finishing D I kept going back to it.
Still don't know what it was asking for O_o
Now, I don't understand problem :)
Seems like RNS hadn't even tried to pretend to be single person. 2 submits in the very same second, 2 accepted within 14 seconds of each other...
Also the two neighbours submissions have pretty different amount of includes...
I think I've read somewhere before that they are a team from Korea always participating together.
I wonder what they are going to do with the tshirt. smh
I do believe in integrity of Codeforces contests enough to be sure there would be no T-shirt for them
We're aware of this "user", this won't be left unpunished.
And his name is nowhere in the rank list. Faith in codeforces restored (not that it was ever shaken)!!
it's because two of their solutions failed system test
I feel like having a big banner on CF home page saying "NORTH KOREA DOES IT AGAIN: ANOTHER SHAMEFUL CHEATING ATTEMPT FROM NORTH KOREAN STUDENTS" would be a more appropriate punishment than hiding them from the leaderboard.
I think that that kind of generalization would be too racist.
Suppose Brazil U20 wins the World Cup 3 times in a row. The day after the 3rd final you open the newspaper and it says "Brazil does it again: another amazing performance from Brazilian youth". Does it sound a racist generaliazation?
You can't say it's shame on all north korea coders just because one of them cheated
It was definitely more than 1 though.
Your example is just silly. It doesn't sound like a racist generalization because it isn't. One might claim that usage of "Brazil" and "Brazilian youth" is a generalization since it's actually only a team who've won the cup, not the whole country/nation. But it's wrong because that is their national team we're talking about. That sentence congratulates the whole country because the team that represents them have won. It's totally different than blaming a whole nation based on limited observation. I think you should consider what you've said before and try to be less offending.
I do not understand your argument. You were happy with Brazilian headline. Now I went ahead and replaced Brazil with NK, the phrasing referring to the act of stellar performance with the phrasing referring to the act of shameful cheating, and Brazilian youth, that represented the team, with NK students, that represented the NK lab behind the user.
I still think that my argument is clear, but I will try to put it in other words just to be sure:
There are 10 people in a room.
First case: Some person steals something from me. Then, I come to conclusion of every person in that room is a thief.
Second case: I want someone to play ping pong with me, that's why I go into that room and ask them to chose a representative player for their room. They choose the player. I play with that player. He wins. I congratulate the room.
The important thing to notice is: I'm not saying everyone in this room can beat me. I'm just saying that this room has defeated me. In the second sentence, "the room" actually refers to the player that represents its room.
First case is a generalization. Second one isn't. It's not related to action's morality or something. It's just that these examples are different. Trying to compare them is absurd.
Now I realize you probably don't possess all the information. This is not the first or second case of a user claiming to be from North Korea being in the top through obvious cheating (code strongly resembling other NK user's code) or less obvious suspicions (submits for different problems within seconds of each other, different coding style, etc). Sometimes they get punished (like on Rockethon this year), sometimes they don't (there was a long discussion on Codechef sometime ago about a Long contest, not sure what happened in other Long contests). I haven't encountered a single case of NK user in the top that resembled an honest result. (I believe there are links pointing to some of these occasions in comments around here so you can check for yourself.)
Hence analogy to your example would be -- every time I see a user from that room coming out, he is stealing something. And I come to conclusion that that room is full of thieves.
Hiding them from leaderboard doesn't prevent us from something like you've described. The cheating issue is much more general and complex than just punishing separate users that get too high in the leaderboard.
Also that would be not fair to say that the worst cheaters are from North Korea, there are many other countries with high amount of cheaters...
North Korean cheaters are the only ones I've seen hailed in internet media (I am referring to NK press making news out of their 'victories' in online contests). I suspect they wouldn't continue this blatant cheating if they got publicly scolded once.
I think they wouldn't care. It's like they're cheating for the sake of cheating, being that obvious.
Not a big banner highlighting someone, but a Hall of Shame (in a sufficiently non-annoying manner) for all cheaters would be appropriate.
They were quite obvious at Codechef contests too, yet Codechef chose not to ban them. They are actually posting news about results of those contests to show how advanced their university is.
Mhm, I wonder why Codechef did what they did. My guess is negligence, but being threatened is also a possibility.
You can't stop propaganda, anyway. If they didn't win any contests, they could outright lie.
I wonder if Korean students are really aware that they are participating not in a team competition?
Why should they ? The believe these are team contests.. :P Here Here
That's hilarious! "Chinese team ACRush working for Google in Washington"
Is that all the proof you have?
I'm pretty sure I've had 2 accepts in 14 seconds at some point in some contest. You give up on debugging a problem, do something else, go back to debugging the first one and find the bug immediately.
Also, if the internet connection is down, you'd continue solving things and then submit 2-3 solved problems at the same time when you're able to submit.
I do not want to go deeper into 14 seconds delta, but non trivial submits on different problems in the same second?
I explained it. Connection comes back up, you submit 2 things you solved during downtime. Some random lag causes the first submission to delay by 2-3 seconds, so it looks like the same second instead of 5 seconds difference.
While using different templates for different problems
That is slightly strange, but still not proof. For example, when a problem requires maxflow, I copypaste some code that I wrote years ago, using a completely different coding style and different macros.
There ought to be a moment when you stop multiply small probabilities and say that something that walks like a duck and quacks like a duck is a duck. Besides admins can check you theory about disconnect by looking into logs
Obviously it looks 99% like what you're saying, but you have to give an extreme amount of "innocent until proven guilty", since false positives are quite terrible.
No, it looks maybe 99.9999% like what you're saying. The chances of getting 2 submits on the same second are already extremely low — it's never happened to me before, AFAIK, and I've made a LOT of submits. A few seconds are very, very rarely enough to fix a bug and submit. Especially if "you're on a slow connection".
By quantum physics, there's non-zero probability of an event occurring (as long as it's in accordance with basic laws — causality comes to mind here). How low does the chance of being a false positive have to be for you to disregard it?
to W4yneb0t:
I don't know why are you arguing whether it's cheating or a rare cased happened.
simply if it is really rare case happened at least RNS could say so,but even him didn't say that it's rare case happened and if he is banned from commenting then he could create new account to say so ,or he can ask a friend to use his account to comment.
also if you're saying that those proofs are only 99% correct then could you give us example of how a 100% proof look like?
As Xellos pointed out above, there's no such thing as a 100% proof. It's hard to say what's enough, but 99.999% definitely is and 90% definitely isn't. With only the info in Egor's original post (before he and Xellos responded with more info), I wouldn't even give it 90%.
This is not another matter of two gray users submitting the exact same code with 1 character changed. Take it more seriously.
if I was in RNS situation and I know that I'm not a cheater then I would post a comment with explanation to how is that these rare cases happened with me.
While bragging about competing as a team.
Anyway, which of these two options do you think is better?:
skip solutions of suspected cheaters and give them a chance to appeal it
nothing
Bragging where?
One link (Russian, Ctrl+F AcRush), evidence that at least one NK team considers individual participants "teams". Further links showing mugurelionut's digs into it: team rns4 (presumably this RNS) did cheat by using another account to submit.
Just try googling for more. Okay, one more link, compare it with this situation.
At this point, you're asking if it's "all the proof" that there's of NK sending teams into individual contests and publicly talking about winning them (hence "bragging"); repeatedly, NK "users" have successive submits with extremely small time gaps, different users had nearly identical codes (plus CC decided they didn't cheat, which is suspicious by itself), and individual users repeatedly send codes with completely different structures. Once again: extremely similar behaviour for different users. Yes, that's all the proof.
Anyway, you haven't answered my question: which choice is better?
Ok, I'm largely convinced. I'm not sure which is better — some people would just say "well fuck you then" instead of appealing, and even if they appeal successfully, there will be some damaging community drama.
I suppose whoever made the decision to disqualify the offender has had access to all this info that you and Egor posted. This info wasn't shown anywhere to someone who is new to the discussion. In this case, it's fine to disqualify.
maybe he is multi-threading human? :D
tourist also should be punished... it's clearly impossible to solve 7 problems in 1:08 alone.
He can :D
He won two ICPC world finals and in the second one his team solved all 13 problems, are you still sure that it's impossible for him?
I was just kidding :)
Ok I'm sorry, I didn't notice :)
Wouldn't be the first time he single-handedly beat a whole North Korean class.
Maybe they don't know that contest for only one coder?)) Or maybe they need a good result to be not killed by their authorities?
Maybe :D
I love this contest
very nice problems.
Hello div 2 again.
same here,especially problem D had nice statement.
D was truly written in an AWFUL way, it took me around an hour to get the statement behind the simple problem :/
k = n in C is so wrong in so many ways >_>... Who would want to play a game which is already ended? I think such tests should be excluded since we have "Stannis starts the game." and when it's already ended it's false xD.
I'm also very disappointed about that.
exactly! how could Stannis start the game if the game never starts!?
i just found out i got hacked cause of that and now i got accepted :|
well I was in a really quiet room. No hacks in my room!
But sadly it was stated that K <= N. That was really tricky. What a sad story!
If there would be a constraint that k ≤ nn then it would also be true — constraints given by inequalities in algo problems stay for conditions which are necessary for test to be correct — not sufficient ones.
Sounds similar to "stressful victory" in this years FBHC, doesn't it? :D
Is there a chance they change the test cases and rejudge C solutions!?
Frankly saying — of course no. However I will stick to my understanding that k = n should be forbidden, but someone can always use some lame excuses like "statement was vague and since it wasn't excluded explicitly by constraints then you should consider this case" (which is not a valid reasoning of course :P).
Can't agree.
Formal > non-formal, so input > description.
See my comment above: http://codeforces.me/blog/entry/18348?#comment-233274 Moreover, how "Stannis starts the game" is non-formal for you?
There is no such thing like "input is more important than description" or other way round. All of them should be consistent and rules assured throughout whole statement are on the same level of importance.
Consider this version of actions during the game: on their turn a player checks if there are just k cities left; in such a case, the game ends and otherwise, that player makes a move. For-loops work this way: the ending condition is checked before the first iteration.
Actually there's a lot of problems that have test cases where the game already ended before it starts
How is that justifying anything :P?
You said test cases such that the game is already ended should be forbidden when the problem statement says that "[name] starts first" , but a lot of game problems exist on codeforces or other OJ stated that "[name] starts first" and has test cases such that the game already ended before it start.
so I meant to say that it's very normal thing to have test case k=n in this problem just like it's normal in other game problems
It's a reasoning with which someone may disagree, but it is a valid reasoning. The statement may be considered vague (at least I needed to translate from Weird English to English sometimes in this contest) in such a way that the case k = n wasn't explicitly excluded. If a case isn't explicitly excluded by the statement, one should consider it (I didn't). Which part of this would be objectively invalid?
"Which part of this would be objectively invalid?" — in an "ideal mathematical model of statements" there is no distinction between "explicitly excluded" and "implicitly excluded" and I consider(ed) that phrase as implicitly excluding, therefore excluding.
"I consider(ed) that phrase as implicitly excluding"
That's not objective.
It is if we will assume that "starts the game" implies "first move exists". One may assume it, one may not, however there should be only one "true meaning" and what we can do now is to debate whether it is as I said or not.
"One may assume it, one may not"
Yep, that's what "vague statement" means. To you, the statement means one thing, so you disgree with the reasoning you call invalid. To someone else, the statement may mean something else — not falsely — and that person would disagree with that same reasoning.
You've made your point and I see your point, but I don't dismiss everything else. The important thing is: what to do next? There's nothing more to say. What there is to do: improve at reading statements, improve at problems of "UGH CASEWORK" type, lead by example by setting problems clearly, offer to review problems for future rounds (if you don't want to participate...) or find someone else who could do that. Path to perfection...
The authors might say, "You know nothing(about Stannis's stubbornness)" ;-)
If it said "Stannis plays the first move", you would be right, but it doesn't. "Stannis starts the game", and the game immediately ends, no problem there.
Hmmm... Probbaly you're right, however whatever the "true meaning" is, I guess it would be best if I will just leave it as it is, stop complaining and be more careful next time :p.
He has to make a move to start the game :|
With all due respect, let's all take English to the grave and bury it together after this contest. Specially on problem D.
Am I they only one who had problems with viewing the code for hacking ? The whole code goes out of the box !
Yes, but after closing and reopening, it fixed itself.
I did that .. but it continued with me for the last 15 minute .
Shoutout to dreamoon_love_AA for hacking my C (with n = k) so that I fixed it and got a lot of points on it :)
Same to me! Thanks dreamoon_love_AA . :)
Me not so lucky! hacked in 2:28 with case k==n :(
Be happy. At least you almost solved a less solved problem!
We hope a good stay in San Francisco for tourist!
Hoping to become purple, please update ratings fast.
And I became purple for the first time!!
Интересно это нормально ? Test: #54, время: 0 мс., память: 4 КБ, код возврата: 0, код возврата чекера: 1, вердикт: WRONG_ANSWER Ввод -1 1 1 1 Вывод 0.99999997764 Ответ 1.0000000000 Протокол тестирования wrong answer 1st numbers differ — expected: '1.0000000', found: '1.0000000', error = '0.0000000'
Посылал в дорешку. http://codeforces.me/contest/549/submission/11475797
Так у тебя погрешность на самом деле больше 1е-9. Ошибка уже в 8 знаке после запятой, так что вполне нормально.
Точно, все верно. Перепутал требуемую для задачи точность. My bad, thx.
[комментарий удалён, повтор]
да, это нормально, ваш ответ не достаточно точный, а error, expected и found вывелись с 7ю знаками после точки, на самом деле error = 0.00000002236...
how to solve G? I tried by sorting the people according to the initial cash they hold, updating the final cash in hand, and checking for validity. But this doesn't pass the pretests. What is the correct solution?
How to solve E?
i see what you did there ;-)
Got my mistake. We need to sort according to a[i]+i
I just passed after contest. For every guy in line give him what would be his value if he is last in line. grab the minimum of this values and update the rest of the array. It is safe to put him at the end of the line as no one else can have value smaller than him by definition of minimum.
When updating everyone who was before the guy with minimum value, say x, they paid him one dollar, though their position become closer to the front and the number of guys in line decreased by one, so we subtract one from all these guys.
For every guy who was in front of x also subtract one as the number of guys in line decreased by one.
Then check if we meet the conditions given of the line.
http://codeforces.me/contest/549/submission/11476753
Since the amount of money a person has is "adjusted" by the change in his position, we can sort the list of people by (original money + original position), then we can place the one with the lowest (original money + original position) in front, then the next one and so on, subtracting off the position from (original money + original position) as you place them. If the resultant order is not sorted, then it is not possible, so output impossible.
"then we can place the one with the lowest (original money + original position) in front" in front you mean the end of the line?
Yup, end of line or "front" of output. Thanks for the clarification.
Вот почему нельзя в условии B было написать, что человек всегда себе звонит? Как это можно понять не вчитываясь во "Входные данные"? Из самого условия я понял, что могут быть петли, а не то, что они будут обязательно. Есть ощущение, что я такой далеко не один.
И сразу же вопрос вдогонку — без дополнительного условия о единицах она вообще решаема за полином?
Нет, доказано, что НП-полная, 2222 3-САТ свел к ней.
Это написано в двух местах в условии, в первом абзаце и во входных данных. В первом абзаце даже специально отмечено болдом.
Вот из первого абзаца я и понял, что могут быть петли(и на это обращают внимание, поэтому выделили). А о том, что они есть всегда по-моему можно понять только из входных данных.
Мне кажется, что написав бы на пару слов больше(или полпредложения добавив) никому бы точно не стало хуже, а при этом бы такая ситуация ни у кого бы не могла возникнуть.
Повторю за Максимом с добавкой.
поэтому рассылают сообщения всем, без разбора, и даже себе.
Гарантируется, что i-й символ i-й строки всегда равен 1.
По-моему, тут всё предельно понятно.
С каких пор переполнение int в одной из двух самых сложных задач в контесте перестали отлавливать претестами? Спасибо конечно авторам за бесценный опыт, но по-моему это странно.
Мы думали, что там одна сложная задача :(
Казалось бы, даже если она не сложная...
Если серьезно, то я считаю, что не взять лонги — такая же бага, как не разобрать случай с несвязным графом, с одной вершиной, взять маленький массив, неправильно посчитать eps, сделать мало итераций, etc. По этому поводу можно долго холиварить: кому-то это нравится, кому-то нет. Я считаю, что этот момент остается за автором, который принял такое решение, зная, что проблемсет не содержит кучу реализаций, и, наверное, чуть проще среднего.
Тем более, что в этой задаче лонги очень даже очевидные.
Dropped far from top 20 because added eps for comparison in H. So stupid :(
Same here.
EDIT: Actually I wasn't in the top 20 anyway. But I think Maybe in the top 200 :D:D
even i added 'eps' and failed. Sadly i also failed for n=k case in C . bad day..i could have been orange easily :(
Sorry if this is a stupid question (first time participating), but: The contests announcement said the order of problems is going to be random, but couldn't people have guessed the value of problem based on how fast its points are falling off? (there was a table on RHS that listed how many points I can get at that point in time for each problem).
Yes; that doesn't falsify the statement that the problems are ordered randomly, even though you can figure out what the "proper" order should be by watching the scores falling.
I don't recall exactly what I saw in the table, but:
How did the points all start out at 3000 if some problems were actually worth only 250, 1000 points, etc.? For instance, if problem A showed 2xxx points in the table early in the contest, wouldn't that have been misleading?
Thanks.
That is called dynamic scoring. The score of a problem depends on the number of people that have solved it; naturally, the more people that solved it, the less the point value is. But at the beginning of the contest, the number of people that will eventually solve it is obviously unknown (not happened yet), so the scores are based on the current number of people that passed pretests.
These numbers depended on the number of solutions that passed pretests at any point in time. You could just look at the dashboard and guess the order of problems based on the number of solutions listed there.
It's perfectly okay to use that.
Of course, but it's only a guess. Also, it might be very wrong because everyone submitted a wrong solution (see problem C).
One unsuccessful hacking attempt can send someone from 1600 to 2700
As did to me! :(
Series of silly bug
from ~80 -> 943 Orz
don't worry, better luck next time.
Mine:
G: used cout and printf with sync_with_stdio(false)
H: intended to use max{|A|,|B|,|C|,|D|} but forgot ||'s
Good bye, T-shirt.
It feels nice when you are not alone who failed due to silly mistakes!
C : n = k
H : eps
Seems that the writer of C scenario hates the Lansters :P
What will they do if they burn King's Landing (with the Iron Throne)? It will happen if k=0.
Is an expected complexity to E? I came up with a solution based on inversion pretty quickly, but when I realized that I need to compute convex hulls on fractions (or on doubles and have hope that this somehow will pass) and that TL seems very risky for such complexity (with hevy operations on fractions/doubles) I felt sad :(.
I believe O(nm) is possible via randomized half-plane intersection; not sure if this was the intended solution though.
No, tutorials will be published very soon and you will see, sorry for delay:)
In problem C, what would be the answer for this case:
8 2
2 2 2 1 1 1 1 1
with explanation please.
Daenerys wins, because she can destroy all cities with population 2. Then there will be two cities with population 1 in the end.
well, you have other possible scenarios that makes Stannis the winner.
how I'm I suppose to decide ??
In these type of tasks you should suppose that both players choose the best possible strategy.
In this case, if Daenerys plays optimally, Stannis have no way to win.
Another possible explanation — choose the strategy when the only answer exists. If there is no such strategy — the answer is impossible (if the task allows this kind of answer).
Can anyone explain why my G failed? Shouldn't nlogn sorting pass for n<=2*10^5? http://codeforces.me/contest/549/submission/11470961
You probably need to use PrintWriter for output and maybe even a faster input method such as BufferedReader.
use faster input and output methods and store answer and print it once instead of print part of answer each time in a loop
your code with a little change in input and output: Your text to link here...
E: since the values of coordinate are small, we can decrease the number of points by ignoring the points which is not in the convex hull.
After that, for each point we use geometric inversion at the point, then we can easily calculate the answer by sorting the points by the argument.
The time complexity is O(|coordinate| log |coordinate|)
Wow, that is so smart! Problem with large number of points magically disappears.
However I'm pretty sure that removing points from convex hull leaves not of them, where z is a range of coordinates.
Your claim is correct.
Oh, you are correct. I believed it was O(z^(1/2)) until now...
Btw, I also came up with an inversion, but what do you mean by "we can easily calculate the answer by sorting the points by the argument"? In my understanding we need to check whether there is a line that separates two sets of point which is equivalent to checking whether two convex polygons intersect, which is not that trivial.
sorry, I mistook. But we can calculate the answer O(z^2log z), by judging whether two convex hulls intersect.(since two polygons are convex, we can judge it by plane sweep method)
Lolololol, that is so wrong, you can't disregard points inside convex hull ( ͡° ͜ʖ ͡°) ( ͡° ͜ʖ ͡°) ( ͡° ͜ʖ ͡°)!! But that was a good try :D. I wonder whether there are tests detecting this :P.
UPD: However we can throw away points inside one of them — that one which we apply inversion to. But this blows up complexity to :P. But it should pass either way
UPD2: Duh, what I said it's not true as well -_-. I got lost xd
I was at place 212 in the first "final standings" and I am now at place 202! Could you find two more cheaters :p? These T-shirts are so nice!
I was at place 316 in the first "final standings" and I am now at place 311! Could you find 111 more cheaters :p? These T-shirts are so nice!
And the chance accepted :)
Awesome :D. It makes my day!
Nooo, I am back to place 204 :-(
Прошу прощения, что означает вердикт "Попытка игнорирована"? Я получил "Претесты пройдены", до конца контеста ничего не отправлял больше по задаче, сейчас обнаружил, что попытка игнорирована без какого бы то ни было пояснения. Как это работает?
UPD: http://codeforces.me/contest/549/submission/11462849
UPD2: Зачли. Но хоть комментарий бы написали, а то меня уже минусуют, как будто у меня сразу было зачтено. Спасибо :)
UPD3: Увидел коммент :)
Отлично!
Надо ещё найти одного читера для Nicolas16 и 110 для vitux.
P.S Это, конечно, шутка... если вы не читер. :D
Я рад вашему задору, но если вы отвечаете за свои слова, то будьте добры пояснить, в каком месте кода я считерил. Код имеется по ссылке. (Не хотел отвечать резко, но прямые безосновательные обвинения тоже не слишком приятны)
P. S. Рад, что у вас есть чувство юмора :)
Извините если я вас обидел. Видимо мне стоило полностью дописать коммент перед тем как публиковать, но до вашего ответа я успел добавить правку.
Мне кажется, все три наши правки были сделаны в тот момент, когда следующий комментарий уже писался, поэтому не были прочитаны вовремя. Своеобразно получилось, да :)
Вообще, если причина в том, что моё решение было признано читерским, и если это сделано автоматом, то было бы неплохо, если будет сразу выдаваться комментарий. Ну то есть, типа "Было списано из статьи ... ресурса ..." или "... из посылки ... участника ...". Это должно сильно упростить решение таких ситуаций. Да и вообще уведомление это неплохо. Я мог закрыть контест и открыть через неделю результаты. А то получается как-то очень грубо и без уважения.
Я не могу сказать, как так получилось, что у вашей посылки образовался статус "игнорирована", откатил ваши результаты.
По поводу комментария к игнорированной посылке — идея хорошая, но на текущей стадии развития все читеры игнорируются по большей части вручную, поэтому писать такие комментарии пока не представляется возможным в силу огромного количества случаев читерства. Наверное, ваш сабмит был причислен к их числу по ошибке, приносим свои извинения.
Тем не менее, мы работаем над улучшением данной процедуры.
Скорее всего, ручная модерация делается на основе выборки, сделанной какой-то программой, мне слабо верится, что есть иной способ. И модератор должен получать от такой программы какую-то информацию о том, почему посылка попала в выборку. Скорее всего, если в случае игнорирования такая информация будет автоматом прокидываться в уведомление, это позволит сильно сократить нервы. Понятно, что информация будет не полной, но хотя бы номер сопоставленного решения будет сильно полезен :)
Раньше вручную проверяли, но после VK cup 2015 всё автоматизированно.
На данный момент все три мои посылки проигнорированы. Узнал я об этом случайно. Зато, похоже, теперь знаю причину. Мне прислали несколько номеров посылок, код в которых совпадает (частично или полностью) с моим. Причём не все они заигнорированы. Думаю, причина в том, что я писал в ideone.com (так уж сложились обстоятельства), а кто-то догадался посмотреть на предмет наличия решений на этом ресурсе в последних сниппетах. Вот незадача. В общем, полагаю, вина в моей безалаберности. В принципе, установить, что код именно мой, не так сложно, просто посмотрев стиль моих предыдущих посылок, но сейчас уже глупо спорить об этом. Так или иначе, но код утёк. Если посылки останутся проигнорированы, то я просил бы сделать контест нерейтинговым для меня -- задачи я решил честно, а получать минус в рейтинг странно из-за этого. Достаточно потраченных времени и сил.
По поводу вежливости хотел бы дополнить ещё раз -- всё было бы куда мягче, если бы изначально было уведомление, а не безмолвное и беспощадное блокирование посылки.
Вообще, я пригляделся к человеку, посылка которого совпала с моей. Надо сказать, выдающаяся личность: http://codeforces.me/submissions/jk95/contest/549
Now lets move on to the Champions League Final!! :)
Which team wins: Barselona or Juventus? :)
surely juve ;)
Barcelona* will win ;)
barca most probably
My favourite team is Real Madrid and my second favourite is Roma... It is hard for me to choose which team to support this night and most likely I will just enjoy the game :)
Может быть я что-то пропустил в условии, но в задаче H нигде не было указано, что элементы вырожденной матрицы, которую мы будем искать, не могут быть нулями. В таком случае, мы можем составить матрицу в которой один из элементов — максимальное значение матрицы, данной во входных данных, а все остальные — нули. Определитель данной матрицы будет равен нулю. Таким образом, ответ всегда 0.Подскажите пожалуйста, где я неправ.Глупость.
UPD: Спасибо большое всем прокомментировавшим: ошибку понял, в следующий раз буду внимательнее.
Ну, как бы, смотрите.
Нам нужно минимизировать max(a[1][1]-b[1][1],a[1][2]-b[1][2],a[2][1]-b[2][1],a[2][2]-b[2][2]).
Как это, по-вашему, всегда будет равно 0?
По простой логике, если max(a[1][1]-b[1][1],a[1][2]-b[1][2],a[2][1]-b[2][1],a[2][2]-b[2][2])=0, то a=b, по-другому никак. А входная матрица, конечно, не обязательно вырожденная. Перечитайте условие.
З.Ы. 11468397 Хорошая попытка, но нет=)
Спасибо большое, теперь я понял то, что надо учиться верно читать условия.
Так ведь ответ тогда будет не ноль, а максимум из модулей трех оставшихся элементов...
Так можно, но это не будет верным решением.
Например исходные данные: (1 1 1 1) Ваше решение: B = (1 0 0 0), k = 1 (наибольшее из абсолютных значений разности исходной матрицы и B) Оптимальное решение: (1 1 1 1), k = 0
Ответом будет норма матрицы A-B, в вашем случае — второе максимальное значение по модулю матрицы А.
upd: Долго писал :)
I hope updating the ratings doesn't delay for too long
"The final results will be announced in a day, after catching all cheaters. " ... So the ratings will change only after the final final standings ?
First I got accepted on my solution for problem A , then the verdict changed to "skipped" , why ?? Can someone explain for me ? And I've only submitted ones.
If you share the submission link perhaps someone can help you :)
Perhaps you shared your code with someone else...
Очень классные думательные задачи, спасибо авторам!
Wish you'd try to catch cheaters every round because many people participate together. Why don't you add a report option? If someone spotted 2 or more codes very much the same they could report them to you.
I wish after 49, there was 50.. Where happiness meets cottons :)
That definitely sucks
Top 4 contestants(sorted in unluckiness order!)
1.scott_wu
2.zemen
3.You!
4.kostroma.
If I'm not mistaken, scott_wu works in Sillicon Valley, which is right next to San Francisco, so I wouldn't call that very unlucky xD
I think he is big loser of the match. :D
UPD : now you become big winner of the match. :))
they've got 2 cheater below you, congrats ;-)
Sadly, it seems that they were not cheaters and you're 51 again :'(
deleted
Will be there any editorial, plz?_
Here it is: Editorial
Edit: ¿Why the downvotes?
I have a question. In the final standings, it doesn't show that I solved A. It just shows I have 1 unsuccessful attempt at D. Why?
Now it shows your Accepted A.
No it still doesn't. http://codeforces.me/contest/549/standings/page/48
Посмотрите, пожалуйста, что у меня в решение не так? Не проходит третий тест(( http://codeforces.me/contest/549/submission/11474914
Судя по логике Вашего решения, Вы полагаете, что игрок, который ходит последним, проигрывает, если нельзя уничтожить города какого-то типа. На самом деле, все наоборот. Да и странные Вы какие-то условия проверяете — противоречивые и непонятно откуда полученные. Советую прочитать разбор.
Дедушка, кажется это не ваше решение.
Dynamic scoring in contests with joint divisions is very poor. C worth 2000pts is a joke. As a result we get people with F done and without n=k case in C ending up lower than those with case n=k considered.
Because of the number of solving users, I have not read the problem statement E and F. And I spend a lot of time for problem C and calculate as more as possible on my A4 papers. However, when I see others solutions for C when hacking, I was shock for the length.
Thanks for the contest. This contest shows my poor English reading skill. I spent nearly an hour in struggling with the statement of D. Thanks for the example input and output, and strict pretest of D.
BTW, who can give me some tips or advice to improve my English reading ability in Programming Contest?
As in every other language, the way to improve is practicing. If you want to improve your understanding of the English statements then the best way is reading and trying to understand lots of other problems, out of competition, here on Codeforces
you can refer to the answers on this question on quora: link
thx
Sorry its already mentioned in the post.
Очень интересно выглядит таблица изменения рейтинга по итогам контеста.
http://codeforces.me/contest/549/ratings/page/1?order=BY_RATING_CHANGE_DESC
shad0w_walker имел до начала контеста рейтинг 1518, набрал на контесте 0 баллов, и получил +261 к рейтингу (не решив ни одной задачи!). И таких пользователей, получивших большой прирост к рейтингу имея 0 баллов, немало.
Но вот следующий за ним Ivy_End имел до начала контеста меньший рейтинг 1399, решил больше (1890 баллов), а прирост к рейтингу у него всего лишь +258. Возможно, тут дело в том, что у Ivy_End до этого был всего лишь один контест, но можно найти и пользователь, у которых достаточно много контестов написано, первоначальный рейтинг был меньше, чем у shad0w_walker, решили они существенно больше нуля задач, но не получили такой сильный рост рейтинга.
А, это читеры с проигнорированными посылками:
http://codeforces.me/submissions/shad0w_walker/contest/549
Сначала им пересчитали рейтинг, а потом уже заигнорили на читерстве. Может быть тогда и изменение рейтинга откатить?
Рейтинг пересчитают после определения всех читеров и объявления окончательных результатов
Посмотрел таких, у которых стоит 0 баллов и большое изменение рейтинга.
Из тех, у кого указана страна в профиле подавляющее большинство (десятки) из Китая и Индии. Пару раз попались египтяне, один раз — Кипр, один раз — Казахстан, один раз — Белорусия.
Why were some people's codes skipped? Although the codes were skipped their ratings still increased.
Cheaters
If you have submitted two or more solutions and get pretest passed, only the last time will be system test, and the others will be skipped.
i think Erilyth is referring to something like this. UPD: i think the issue has been fixed.
Can anyone explain in detail the binary search solution to question H? I have been struggling for the last hours to solve it/understand it.
My solution: 11477556
Binary search for the answer (maximum for absolute value of change of any of a, b, c, d). Minimum possible value is 0.0. Maximum possible value is max(min(|a|, |d|), min(|c|, |b|)). (Because it is sufficient to replace one of a, d with 0.0 and one of c, b with 0.0.)
Step of binary search. Find maximum and minimum for a * d and for b * c, changing any of them (a, b, c, d) up to x, where x is current value of the answer. See my functions bestMax and bestMin. They select the best of 4 values. (Proof: the result of a multiplication is a liner function of each of the values multiplied. Maximum value of a linear function is observed when its argument is min or max.)
Then you compare four values. If range of (a * d) values intersects with range of (b * c) values (see function best), then such values can be selected that (a * d) — (b * c) = 0. If this condition is satisfied, then the answer is <= current value of x, set max bound of binary search to current x. Otherwise set min bound of binary search to current x.
Number of steps is set to 1000, so precision is about a value of 2^1000, which is much more than 10^9.
Thanks a lot, could you tell me what is wrong with my code? http://codeforces.me/contest/549/submission/11489337
Your code works with two minor fixes: 11492104
Thank you! What is the significance of l1 * r1?
"l1 * r1" is one of values. Other option is to use Double.MAX_VALUE * -1
Wow, just wow!! I must applaud codeforces on the algorithm they are using to catch cheaters. But the algorithm is so effective, that it is not only catching catchers, but also innocent problem solvers. Kudos to codeforces!! -_-
Когда примерно появятся окончательные результаты и "правильный" рейтинг?
We've finished to process similar solutions. This time we unrated users with very-very similar solutions, but didn't count the first (by time)/original solutions in each equivalence group. Next round we will punish them too. We believe that it is the duty of a participant to not allow solutions to leak. For example, you should not use ideone with enable
Public - your code will be available to everyone
feature. Also next time we will make deeper analyze to compare solutions and find cheatersIn case of repeating cheating an account will not be able to take part in rounds for some time.
Please work personally. Use of another's solutions does not make you smarter. It is ugly and shameful, it is disrespectful to Codeforces and other participants.
Could you Please explain how the current dynamic scoring works?
Problem A was a cakewalk problem and it had several (about 3000+ ) solutions accepted . So chances of 2 or more solutions being same are really high , i personally know some people who solved it really quick and i am sure they didn't cheat but still they got caught for cheating and this round went unrated for them , i think an exception should be made for problem 'A' only and should not catch cheaters for this this problem . Thank you :)
I am in a similar situation. I submitted within ~9 minutes and I think it is the reason I have been disqualified from the contest :/
It looks like my soltions got accepted again. Sorry for the angry outburst, but I do think you should look into the solutions more carefully.
There are also cheaters who have two accounts and use one to view other's solution (after passing the pretest) and then use the other one to copy it. To handle this situation, I think problem writers should make sure their pretest are strong enough.
Another solution is to add more limit on hacking. For example, one can lock a problem if and only if his solution have passed the pretest for 30 mins or the contest will end in 30 mins.
cheaters removed and Update again rating and hello div 1 again (:
Однако мой код доступен всем в моей комнате, кто решил эту задачу. И если кто-то решит дать списать своему товарищу, он может просто заблокировать задачу и дать ему чужой код. В таком случае будет дисквалифицирован невинный человек?
Losery Cup 2015
Roman Giertych, is that you?
Good news. Maybe another cheater is found. You are the 200-th now! Congratulations!
I didn't get green t-shirt but I got green :)
I'd rather have my username exactly the same on the back of my t-shirt. I mean Monyura shouldn't be monyura on his t-shirt.
Sure. Monyura is Monyura on CF only. In all other places he is monyura. So, it's just a bug on T-shirt example.
Don't worry, we will use Case-sensitive designer)
I had taken part in the contest but I can't find the changing about my rating.I solved 5 problems,and one of them fst. but now I can't find any record about it.who can tell me why
А что с призами? Не видел ни одного комментария организаторов по этому поводу. Они будут разосланы по почте, на адрес, указанный в профиле? Свяжутся ли со мной, когда посылка будет отправлена?
Хороший вопрос. Что с призами?
Вам, как и всем призерам, должно было прийти письмо от MikeMirzayanov с просьбой проверить, что поле адресс находися в актуальном состоянии. Если это так, мы напишем сообщение, как только приз будет отправлен. Сейчас мы ведем переговоры, как лучше эту отравку орагнизовать, все призы найдут своих героев:)
Did any one get their tshirt?
Same question. Neither t-shirt, nor prize.
So, is there anybody who got their prizes now?
I did :D
I didn't get my prize yet T.T Is it only me who couldn't receive the prizes?
Me either :(
Finally I got my T-shirt today!.. but not the Ollie thing :p They received my address about a month ago, so I think I should wait for another 9 months to get the Ollie :D?
I also got my T-shirt yesterday :)
I also received my T-shirt today. So nice :) Hope further T-shirts will have strange colors like this :)
6 months passed after I got an email about the prize, but I have no idea where the prize is. Is there anyone else who still couldn't get their prizes?
I still haven't received an ODK. I sent multiple reminder emails, and they stopped responding to those. Can someone help us here?
EDIT: This has been resolved and I received an ODK.
12 months passed after I got an email about the prize, but still I don't have any idea where the prize is. Is there anyone else who still couldn't get their prizes?
Continue the tradition
25 months passed after I got an email about the prize, but still I don't have any idea where the prize is. Is there anyone else who still couldn't get their prizes?
Отсутствие футболок как-то связано с тем, что Snapchat купили Looksery?
Это наш первый опыт в проведении раунда, так что все не так оперативно, как у Google. Но смею заверить — мы от своих обязательств не отказываемся.
Можно было, наверное, довезти часть футболок на физтеховские сборы, на которые приезжала от вас команда.
Я тоже от футболочки бы не отказался :)
Я ещё не получил футболку. Думаю, я не один такой. Прошу привезти на сборы в ПТЗ, если можно
+1