Разница между компилятором GCC для c ++ 11 и компилятором USACO - PullRequest
0 голосов
/ 16 октября 2018

Для скучных чисел тренировочного шлюза USACO у меня есть решение, которое работает для первых 4 тестовых случаев, но затем для тестового примера 5, который был приведен ниже для обхода потребности во входных файлах, моя программа получает правильный ответлокально при компиляции GCC и на моем телефоне (не уверен, какой компилятор).Если я отправляю ответ в USACO, он не дает правильного ответа.Из того, что я прочитал, это означает, что программа имеет какое-то неопределенное поведение где-то, но я ничего не смог найти.

#include <fstream>
#include <iostream>
#include <set>

using namespace std;

//ifstream fin("humble.in");
//ofstream fout("humble.out");

set<unsigned long> cont;

int main() {

    int K = 6;
    int N = 25000;
    unsigned long values[]= {2, 3, 5, 7, 11, 13};

    cont.insert(1);
    unsigned long r = 0;

    for (int i = 0; i <= N; i++) {
        r = *cont.begin();
        for (int j = 0; j < K; j++) 
            cont.insert(r*values[j]);
        cont.erase(r);
    }

    cout << r << endl;

    return 0;
}

Ответ, который я получаю локально (и правильный ответ) - 682628310. Ответ, который я получаю в USACO67108864.

...