Brian_Hsu's blog

By Brian_Hsu, history, 2 years ago, In English

After Educational Codeforces Round 120, I went through all the successful hacks and found something suspicious. A couple submissions of the same problem (problem A) by an account called SIMON_MOLODETS have been successfully hacked. I got curious and viewed his code, and this is what I found: 140819355 140819499 140819706 140819908 140820020 140820234 140820399 140820592 140820839

The following is one of his submissions:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
int n;
cin>>n;
if(n!=67){
for(int i=0;i<n;i++){
    int a;
    int b;
    int c;
    cin>>a>>b>>c;
    if(a+b==c or a+c==b or c+b==a) {
    cout<<"YES"<<"\n";
    continue;
    }
    if((a==b and c%2==0) or (c==b and a%2==0) or (a==c and b%2==0)){
    cout<<"YES"<<"\n";
    continue;
    }
    else{
        cout<<"NO"<<"\n";
    }
  } 
}
else{
    for(int i=0;i<67;i++){
        cout<<"NO"<<"\n";
    }
  }
}

All the submissions above are almost identical. The only difference between them is line 8. He used if(n!=67) to deliberately output a wrong answer on specific inputs that did not appear in the pretests, in order to trick the judge into believing the code is correct, and then hacked the code with specific inputs using other accounts. I believe this is a form of cheating, but it doesn't seem to be in the rules.

Full text and comments »

  • Vote: I like it
  • +18
  • Vote: I do not like it