Out of best solutions on the first page except 2-3 all are copied. I saw some solutions and maximum solutions are copied and i am sure that half of all the AC solutions have copied from somewhere.
Thats because the problem was a direct application of suffix arrays. So, many people copied their previous implementations or each others from problems like mouh1 of july challenge. The submissions you see on the first page use ukkoken’s algo. Thus they are similar or appear to be.
When I saw this post, I first thought that maybe they all just used the same O(N) suffix array construction method that is first returned by google search, found here http://www.cs.helsinki.fi/u/tpkarkka/publications/icalp03.pdf. I wouldn’t consider that cheating if an implementation is publicly accessible.
But no, every element of their code is the same besides some deciding to rename a variable or two, or changing their array size to make the memory usage appear different. Most just copied with no changes, even leaving in that commented print statement. These people are really bad at cheating.
One solution mentions “Thanks to niklasb for suffix automation” - searching this name provided the https://github.com/niklasb/contest-algos/commits?author=niklasb repo, where these solutions may have come from originally. Someone initially copied this, which cannot be avoided unfortunately, but the additional code added to this repo commit also appears in all these solutions.
So then another submission linked to http://webcache.googleusercontent.com/search?q=cache:FYyTLw7_nLQJ:stackoverflow.com/questions/22442408/longest-common-substring-using-suffix-automata+&cd=1&hl=en&ct=clnk&gl=in
This is the exact code, posted on stackoverflow. Again unavoidable, and it is not up to me to claim they should be banned, but just so the admins know who is cheating:
http://www.codechef.com/viewsolution/3611113
http://www.codechef.com/users/dubey_ravi
http://www.codechef.com/viewsolution/3611201
http://www.codechef.com/viewsolution/3607979
http://www.codechef.com/viewsolution/3614137
http://www.codechef.com/users/heisenberg007
http://www.codechef.com/viewsolution/3616089
http://www.codechef.com/viewsolution/3608352
http://www.codechef.com/users/jatinims2021
http://www.codechef.com/viewsolution/3610644
http://www.codechef.com/viewsolution/3611720
http://www.codechef.com/viewsolution/3609801
http://www.codechef.com/viewsolution/3606462
http://www.codechef.com/viewsolution/3615275
http://www.codechef.com/viewsolution/3611218
There are far more but I’m a bit tired of doing this.
@rodomonte:I have used this implementation on the basis that I’ve learnt this concept.Since it’s implementation was not easily available ,Hence I have implemented it from the code mentioned in stackoverflow link.And trust me I haven’t done this for AC but for getting deeper insight into various
algorithms and it’s implementations which will increase my knowledge.
According to the codechef code of conduct “Taking help or using a third party code is not bad. Passing it off as your own is. If you are taking your code from some other source, it is expected that you give the due attribution to the source in your code. It is kind of mandatory.” We can use some public code as long as we don’t claim the code to be ours and mention the source as a comment in the code.
Wow. Actually I copied and adapted that code from the Stack Overflow question for my collection because it was a nice implementation (I already had SSTORY accepted using suffix arrays). So Stack Overflow is the original source (whether it is Kaidul’s code or not, I have no idea).
People must be Googling like crazy to find this stuff. It’s really insane. I mean what does it give you to solve a problem with someone else’s code? There’s really totally zero achievement in that.