Compiler construction codechef编译器是如何工作的?

Compiler construction codechef编译器是如何工作的?,compiler-construction,c++14,Compiler Construction,C++14,我想知道codechef编译器是如何工作的。实际上不仅仅是codechef编译器,其他竞争平台的编译器在后端的工作方式也是如此。因为我在本地编译器上获得的输出有时与codechef上的在线编译器不同 例如,在我的本地编译器上,当我运行以下代码时,我得到了正确的输出: #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() {

我想知道codechef编译器是如何工作的。实际上不仅仅是codechef编译器,其他竞争平台的编译器在后端的工作方式也是如此。因为我在本地编译器上获得的输出有时与codechef上的在线编译器不同

例如,在我的本地编译器上,当我运行以下代码时,我得到了正确的输出:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
    // your code goes here
    int t;
    cin >> t;
    while (t--)
    {
        int val, N, Z, count = 0, evacuate = 0;
        vector<int> v;
        cin >> N >> Z;
        for (int i = 0; i < N; i++)
        {
            cin >> val;
            v.push_back(val);
        }
        std::make_heap(v.begin(), v.end());
        while (Z > 0)
        {
            int power = v.front();
            Z = Z - power;
            std::pop_heap(v.begin(), v.end());
            v.pop_back();
            power = power / 2;
            if (power)
            {
                v.push_back(power);
                std::push_heap(v.begin(), v.end());
            }
            else if(power == 0 && Z > 0){
                evacuate = 1;
                break;
            }
            if (Z < 0)
            {
                count++;
                break;
            }
            count++;
        }
        if (evacuate)
            cout << "Evacuate" << endl;
        else
            cout << count << endl;
    }
}
#包括
#包括
#包括我正在获得意外输出(仅0)

另外,代码正在处理


CodeChef编译器如何工作以及两者的输出如何不同?可能问题也可能出在代码上,但在本地,我正在为手动提供的输入获取正确的输出。

刚刚检查,您的代码工作正常。问题是您没有任何可供输入的内容

选中“自定义输入”,然后输入“1 5 25 7 13 8 17 3”,您将看到预期的结果

编辑:


为此,首先选中红色圆圈中的复选框,然后下方会显示一个文本框,您可以在蓝色框中键入测试用例。

可以在此处找到CodeChef使用的编译器:哦,那么我应该使用CodeChef使用的同一个编译器,而不是visual studio或其他任何编译器吗?在对问题进行否决表决之前,您是否研究了整个问题?不要担心使用相同的编译器。如果您不使用任何高级语言功能,并且您的代码没有UB,任何最新的编译器都会给出相同的结果。@HolyBlackCat请注意gcc 6.3有点旧,只部分支持c++17。将不支持
string\u view
gcd
to\u chars
之类的操作。我想知道我没有什么类型的输入。我看到您刚刚在codechef上成功提交了代码,但做了哪些更改。@Shivanshhrivastava我没有更改任何内容,这正是您拥有的代码。抱歉,如果我不小心提交了它,不确定你是否还能继续工作。我只是想检查它是否有效。明白了,可能我应该提交而不是运行。我不熟悉codechef编译器,这就是为什么在上一期中被问及它的原因。@shivanshrivastava检查我的编辑,这就是您尝试自定义测试用例的方式。对于实践来说,这并不重要,但如果您可以先尝试不同的测试用例,这仍然很好。但是如果你要参加任何比赛,如果你提交了任何错误的答案,你通常会被扣分。最后一件事就是为什么我没有启用这个自定义输入。我的意思是我不能点击它。如何使用它?英雄联盟