11 / 315
May 2008

I agree with the possibility 3 laughing
I'm just kidding.

I can't understand why some problems, like finding seats, may be submited in TEXT...
About the topic, i think the test cases should be shuffled or add more cases, in order to avoid that someone submit the solution(TEXT) used in contests.

Obs.: We (brazilian) don't cheat. All rigth, the brazilian politics do...

OK, it looks like an "exclude from ranklist" flag, per user, per contest, should be sufficient to enable blacklisting. I will add this option shortly.

I'm still not convinced whether blacklisting in the main SPOJ problemset (in English) is a good idea.

I agree - it may cause some tension if people are blacklisted dubiously.

Wouldn't it be easier to do things on a per-problem basis? If the author sees that someone has just submitted code that obviously isn't theirs, they can 'delete' the solution, email a warning, and see how things go from there?

I do agree with TripleM. We problemsetters can deal with cheating much easily with the ability of deleting some "cheat" submissions.

Well, some people may be asking things like:

"Why bother with cheating? There are no prizes at all, we just do it for fun and if someone is cheating he/she is just wasting time in a very pointless way?"

There is some truth in statements like this, but let's face it, we all like SPOJ's ranking system and it is one of the reasons, for me at last, to keep solving problems. There is a sense of achievement when we go up a little bit in the ranks after an acceptance, or when we submit the best solution for a problem (even if it is not a challenge problem). It is difficult to explain this to some people, but if you are reading this post you probably agree with me.

There is also a "patriotic" pride when we help our country to go up in the countries rank, specially when you want to stimulate other people to study algorithms (as in my case, because I'm a CS teacher) and your country has no tradition in programming (I'm from Brazil).

The problem with cheating is that it really makes things look pointless. Our little "abstract" sense of achievemente becomes even more abstract, because the same thing that we got from struggling is obtained by others with no efforts.

Most people that complained about the Brazillian guy that cheated are from Brazil, and they, alas we, were dismayed because he messed up our local rank an the countries rank. Suddenly, the whole thing seemed very meaningless. The effect in the global rank is not that significant, but try to imagine what it would be like if the top ranker was a cheater, or if there were lots of cheaters in the top 50.

Some people may be thinking now "If you feel this annoyed why don't you just quit?". Well, I lost my impulse in SPOJ when the cheating came up in a newsgroup of brazillian SPOJ members. Some people felt just like me. I don't think that problems like this should be ignored.

But I don't think this is an unsolvable problem. I recovered my impulse when the supposed cheater changed his name and country. I think he recognized that his acts were the results of poor judgement. This kind of cheating will happen again in rare ocasions, but a little talk with the administrators or something like that will (probably) get things straight. A per-problem elimination of dishonest solutions may set things right. But there must be a way to detect cheating before the number of bad submissions gets too high.

A curious way to facilitate the correction of cheating is to allow users to disqualify their own solutions if they think they are dishonest. I think that neophd himself would do something like that if he had the opportunity.

28 days later

This user neophd is seriously annoying, now he pretends to be from China, and he's posting the judge's solution in TEXT format for some problems:

spoj.pl/ranks/EMOTICON/164

This really makes me lose motivation, please expel this scum.

This user neophd is too cheeky. His action(pretending to be a Chinese user) will lose credits of our Chinese users. BTW, the user name he pretend is really the name of a Chinese ACMer from Zhejiang Univ.

Please ban this user id and delete all his submissions.

After my last (very long) comment about cheating and the recent stream of submissions by neophd (as I write he is calling himself Neo) I am feeling very, very naive...

(Edit: my original message was partially destroyed after the word "naive". I don't remember how it ended)

This whole discussion continued in the Brazillian forum, at SPOJ Brazil. For those that speak portuguese:

br.spoj.pl/forum/viewtopic.php?t ... sc&start=020

It seems that neophd has finally got our point. He started a new account where he promises to submit only honest solutions.

I'm willing to believe him. I know that this is the second time I do so, and in the first time I got very disappointed, but this time he communicated his decision directly into our forum.

I still would like to see his previous account erased, and probably so do he (unless, of course, he doesn't have an archive of his honest solutions), but I wish his new account will show his real potential and provide him some real fun.

Carlos
P.S. - I do believe that naÄ
(EDIT: again, the word "naive" truncated my message...)

6 months later

These days a user whose id is "obama" has submitted many stardard programs. Actually I want to delete his submissions or have him blacklisted...

29 days later
15 days later

User nkvuong is cheating at vietnamese online judge ( vn.spoj.pl/8)
He submitted many solutions on the web (he also change variable names, function names, and many things else to make it more difficult for admins and problem setters to know that), output data for test cases that he could not solve, and even add difficult problems in vietnamese online judge to spoj to collect solutions and submit them:
vn.spoj.pl/problems/QBFLOWER/58 (he just submitted blue mary's solution)
vn.spoj.pl/problems/MILITARY/14
vn.spoj.pl/problems/GCDSUM/5
vn.spoj.pl/problems/SCIRCLE/4
vn.spoj.pl/problems/PALINX/3
vn.spoj.pl/problems/BOSS/4
It's easy to see that right after someone get accept on spoj, he submit in vietnamese online judge (this explain why he rejudged problem GCDEX to make solutions that he can't use get TLE (the problem GCDSUM in vietnamese online judge has really strict time limit so he couldn't use many accepted code in spoj)) and why he was willing to give test cases of problem VCIRCLES on spoj (he deleted his comment under the problem when he got accepted in vietnamese online judge)
Can spoj admins do anything about this?

Here are some of nkvuong's interesting code to prove what I said. There are many more cheating code (sorry, I don't know how to post code)
submission 2081178
var n:integer;
f:array[1..4000] of string;
begin
f[1157]:='59310955574174378025143';
f[1158]:='608738499757149308420461';
f[1159]:='624772964943249389853921';
f[1160]:='641222772712946666232159';
f[1161]:='658098503325620557703531';
f[1162]:='675411002095367948226792';
f[1163]:='693171385921368804266503';
f[1164]:='71139149976492178207743';
f[1165]:='730081674557913935063085';
f[1166]:='749255232103605934739479';
f[1167]:='768923994378646785063103';
f[1168]:='789100539835396883939357';
f[1169]:='809797761151675117596505';
f[1170]:='831028872951171360193205';
f[1171]:='85280741971042867086399';
f[1172]:='875147283856825592496127';
f[1173]:='898062694062109480753151';
f[1174]:='921568233736104125879807';
f[1175]:='945678849725365687304481';
f[1176]:='97040986122163883222045';
f[1177]:='995776968885089512945407';
f[1178]:='1021796264187423103783033';
f[1179]:='104848423898007434502441';
f[1180]:='1075857795292827120414039';
f[1181]:='1103934255368313170878195';
f[1182]:='1132731371937969551486879';
f[1183]:='1162267338745180573579677';
f[1184]:='1192560801321446407655743';
f[1185]:='1223630868021565282662399';
f[1186]:='125549712132395373058651';
f[1187]:='1288179629402366802651719';
f[1188]:='1321698957975444222097689';
f[1189]:='1356076182440620738701165';
f[1190]:='1391332900299137403659864';
f[1191]:='1427491243879009512858099';
f[1192]:='1464573893362984956103679';
f[1193]:='150260490128684565788671';
f[1194]:='1541605650408283495393521';
f[1195]:='1581602979275263415146495';
f[1196]:='162262184965939854852515';
f[1197]:='1664685593543647485026457';
f[1198]:='1707822763913648832465553';
f[1199]:='1752059503197018682676295';
f[1200]:='1797423382471947368620319';
readln(n);
writeln(f[n]);
end.
He did this many times to find informations about input data
submission 2169477

include

include

using namespace std;
int ________, zzzzzzzzzzzzzzzzzz;
struct bxyz134 {
short r, s;
bxyz134() {}
bxyz134( int rr, int ss ) { r = rr; s = ss; }
int z_z_z_z() { return r >= 0 && r < ________ && s >= 0 && s < zzzzzzzzzzzzzzzzzz; }
friend bxyz134 operator + ( const bxyz134 &a, const bxyz134 &b ) {
return bxyz134( a.r + b.r, a.s + b.s );
}
};
bxyz134 zz__zzz1, zz__zzz2;
char z_z[1500][1500];
char z_z_z_z_z[1500][1500];
char __zz[1500][1501];
queue zz__zzz_to__zz__zz__, zz__zzz__z___zz___zz__zz__;
queue zz___to__zz__zz__, zz____z___zz___zz__zz__;
int main() {
scanf( "%d%d", &________, &zzzzzzzzzzzzzzzzzz );
int num = 0;
for( int r = 0; r < ________; ++r ) {
scanf( "%s", __zz[r] );
for( int s = 0; s < zzzzzzzzzzzzzzzzzz; ++s ) {
if( __zz[r][s] == 'L' ) {
if( ++num == 1 ) zz__zzz1 = bxyz134( r, s );
else zz__zzz2 = bxyz134( r, s );
__zz[r][s] = '.';
}
if( zz[r][s] == '.' ) { z_z_z_z_z[r][s] = 1; zz____z___zz___zzzz__.push( bxyz134( r, s ) ); }
}
}
const bxyz134 zz___zzz[4] = { bxyz134( -1, 0 ), bxyz134( 0, 1 ), bxyz134( 1, 0 ), bxyz134( 0, -1 ) };
zz__zzz__z___zz___zz__zz__.push( zz__zzz1 );
z_z[zz__zzz1.r][zz__zzz1.s] = 1;
int zzzz__;
for( zzzz__ = 0; !z_z[zz__zzz2.r][zz__zzz2.s]; ++zzzz__ ) {
for( ; !zz__zzz__z___zz___zz__zz__.empty(); zz__zzz__z___zz___zz__zz__.pop() ) zz__zzz_to__zz__zz__.push( zz__zzz__z___zz___zz__zz__.front() );
for( ; !zz____z___zz___zz__zz__.empty(); zz____z___zz___zz__zz__.pop() ) zz___to__zz__zz__.push( zz____z___zz___zz__zz__.front() );
for( ; !zz___to__zz__zz__.empty(); zz___to__zz__zz__.pop() ) {
bxyz134 a = zz___to__zz__zz__.front();
__zz[a.r][a.s] = '.';
for( int d = 0; d < 4; ++d ) {
bxyz134 b = a+zz___zzz[d];
if( !b.z_z_z_z() || z_z_z_z_z[b.r][b.s] ) continue;

        z_z_z_z_z[b.r][b.s] = 1;
        zz____z___zz___zz__zz__.push( b );
     }
  }
  for( ; !zz__zzz_to__zz__zz__.empty(); zz__zzz_to__zz__zz__.pop() ) {
     bxyz134 a = zz__zzz_to__zz__zz__.front();
     for( int d = 0; d < 4; ++d ) {
        bxyz134 b = a+zz___zzz[d];
        if( !b.z_z_z_z() || z_z[b.r][b.s] ) continue;
        z_z[b.r][b.s] = 1;
        if( __zz[b.r][b.s] == '.' ) zz__zzz_to__zz__zz__.push( b );
        if( __zz[b.r][b.s] == 'X' ) zz__zzz__z___zz___zz__zz__.push( b );
     }
  }

}
printf( "%d\n", zzzz__-1 );
return 0;
}
He changed variable names into something unimagineable after I reported what he's been doing to VOJ admins (and he still denied what he's been doing until now). But it is still easy to see that this is still Croatian code that can easily be found on hsin.hr/15

Last month he was able to get to rank 1 of vietnamese online judge for about two or three days. I think SPOJ admins should do something about this.

thanks!

it looks he was cheating,

he is temporarily banned (no access to SPOJ system), after we carefoully look into it, we decide what to do.

As I can see he is no longer on the sphere online judge ranking, and his user page at spoj is empty. Was his submission deleted?
But his user page at vietnamese online judge is NOT empty. Does this mean he can still access to vietnamese online judge?