C++ CodeJam尽管给出了正确的输出,但不接受我的解决方案(Parentning Partnering返回问题)

C++ CodeJam尽管给出了正确的输出,但不接受我的解决方案(Parentning Partnering返回问题),c++,C++,可在此处找到以下问题: 正如标题所说,我已经编写了我的解决方案,它提供了所有正确的输出。尽管输出正确,但我的每次提交都会简单地说错误答案(跳过测试集) 这是我的密码: #include <iostream> #include <string> #include <vector> using namespace std; bool available(int S, int E, vector<vector<int>> tasks) {

可在此处找到以下问题:

正如标题所说,我已经编写了我的解决方案,它提供了所有正确的输出。尽管输出正确,但我的每次提交都会简单地说错误答案(跳过测试集)

这是我的密码:

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

bool available(int S, int E, vector<vector<int>> tasks) {   
    if(tasks.size()==0) return true;
    else {
        for(int i=0; i<tasks.size(); i++) {
            if((S>=tasks[i][0] && S<tasks[i][1]) || (E>tasks[i][0] && E<=tasks[i][1]) || (S<=tasks[i][0] && E>=tasks[i][1])) return false;
        }
        return true;
    }
}

void assignTask(int S, int E, vector<vector<int>> &tasks) {
    if(0<=S && S<=E && E<=1440) {
        tasks.push_back({S, E});
    }
}


void solve() {
    int N;
    cin>>N;

    vector<vector<int>> JTasks, CTasks, time;
    // scheduling time
    for(int i=0; i<N; i++) {
        int S,E;
        cin>>S>>E;
        if(0<=S && S<=E && E<= 1440) {
            time.push_back({S, E});
        }
    }
    // assign tasks
    bool possible=true;
    string str="";
    for(int i=0; i<N; i++) {
        int S=time[i][0];
        int E=time[i][1];
        if(available(S,E,CTasks)) {
            assignTask(S,E,CTasks);
            char c='C';
            str.push_back(c);
            continue;
        } else if(available(S,E,JTasks)) {
            assignTask(S,E,JTasks);
            char j='J';
            str.push_back(j);
            continue;
        } else {
            possible=false;
            break;
        }
    }
    if(possible) cout<<str;
    else cout<<"IMPOSSIBLE";
    cout<<"\n";
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    int T, i=1;
    cin>>T;
    while(T--) {
        cout<<"Case #"<<i<<": ";
        solve();
        i++;
    }
}
唯一与预期输出不同的是测试用例#3,但是如果您阅读主页中的指南,它应该是一个可接受的答案(因为这是一个调度问题)


任何帮助都将不胜感激

我没有意识到Google Code Jam更新了其政策,允许在资格赛中进行合作

我假设您已经知道,示例测试不是在服务器上针对您的解决方案运行的唯一测试,因此在它们上获得正确的结果并不意味着代码将被接受

您的解决方案基于一个错误的假设,即只要不存在持续冲突,以任何顺序将任务分配给J和C都是最优的。下面是一个这样做不起作用的例子:

AAAAAAAA       BBBBBBBB
      CCCCCCCC
            DDDDD

任务A与任务C重叠,任务D与B和C重叠。您可以将A和D分配给一个人,将C和B分配给另一个人;但是,您的代码会将A和B分配给一个人,而无法将C和D分配给另一个人。

请在问题本身中提供所有必要的信息,不要链接到外部资源。该问题应在不点击链接的情况下回答。请提供一份包含输入数据和预期输出的报告。如果您用硬编码值替换用户输入,这会有所帮助。那么您需要按哪个顺序进行操作?
AAAAAAAA       BBBBBBBB
      CCCCCCCC
            DDDDD