https://codeforces.com/blog/entry/61675


념글에서 이거보고 이번 코포 E번 Hack해볼라고 했는데


그 블로그에 나온대로 time(NULL)값을 받아서 time(NULL) ~ time(NULL) + 9 까지 srand에 넣어가면서 나올 수 있는 값을 저격하는 식으로 generator를 짰더니


Generator is not determinate [the verification run produces different output, cmd =main]

이런 메시지가 나오면서 generator crashed가 뜨네


실행할 때마다 다른 값이 나온다...? 이런뜻인가


다른 사람들 코드를 보니까 time(NULL)값을 받는게 아니라 그냥 현재 시간을 숫자로 넣어주던데


그럼 얘네들은 현재 시간 확인한 다음에 10초가 지나기 전에 재빨리 코드를 수정하고 서버에 제출하는 거야??


그거 시간이 되나... 큐에서 대기하고 있는 시간도 있을텐데


물론 이번에는 srand를 10번이 아니라 100번이든 1000번이든 돌려도 괜찮았지만


저 블로그에 있는 507B는 10번까지밖에 못돌리잖아?


그럴때 어떻게 Hack하는 거야..? 그냥 손의 스피드를 믿어야해?



혹시나 해서 내 코드도 올림

#include
#include
#include
#include

using namespace std;

int main()
{
    int n = (int)1e6;
    long long time_now = time(0);
    bool t[n] = {};
    for(int i = 0; i     {
        srand(time_now + i);
        for(int j = 0; j             t[((long long)rand()*RAND_MAX+rand())%n] = true;
    }
    int arr[n];
    int odd = 1; int even = 2;
    for(int i = 0; i     {
        if(t[i])
        {
            arr[i] = even;
            even += 2;
        }
        else
        {
            if(odd > n)
            {
                arr[i] = even;
                even += 2;
            }
            else
            {
                arr[i] = odd;
                odd += 2;
            }
        }
    }
    cout <    for(int i = 0; i     cout <    return 0;
}