Submission #747762

#TimeUsernameProblemLanguageResultExecution timeMemory
747762adrilenDetecting Molecules (IOI16_molecules)C++17
Compilation error
0 ms0 KiB
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
typedef pair<int, int> pii;
 
#include "molecules.h"
 
constexpr int maxu = 5e5 + 5;
 
int last[maxu] = { 0 };
 
bool found[maxu] = { 0 };
 
std::vector<int> find_subset(int l, int u, std::vector<int> w) {
    
    
    found[0] = true;
 
    int highest = 0;
 
    int p;
 
    for (int v = 0; v < (int)w.size(); v++)
    {
        for (int i = min(highest, u - w[v]); i >= 0; i--)
        {
            if (!found[i]) continue;
            // cout << i << endl;
            if (i + w[v] >= maxu) continue;
 
            if (found[i + w[v]]) continue;
 
            found[i + w[v]] = true;
            last[i + w[v]] = v;
 
            if (l <= i + w[v] && i + w[v] <= u) {
                p = i + w[v];
                goto finish;
            }
        }
        highest += w[v];
    }
 
    return vector<int>{};
 
    finish:
 
    vector <int> output;
 
    // int i = 15;
    while (p != 0)
    {
        output.emplace_back(last[p]);
        // cout << "p" << p << endl;
        p -= w[last[p]];
    }
 
    return output;
}#include<bits/stdc++.h>
using namespace std;
using ll = long long;
typedef pair<int, int> pii;
 
#include "molecules.h"
 
constexpr int maxu = 5e5 + 5;
 
int last[maxu] = { 0 };
 
bool found[maxu] = { 0 };
 
std::vector<int> find_subset(int l, int u, std::vector<int> w) {
    
    
    found[0] = true;
 
    int highest = 0;
 
    int p;
 
    for (int v = 0; v < (int)w.size(); v++)
    {
        for (int i = min(highest, u - w[v]); i >= 0; i--)
        {
            if (!found[i]) continue;
            // cout << i << endl;
            if (i + w[v] >= maxu) continue;
 
            if (found[i + w[v]]) continue;
 
            found[i + w[v]] = true;
            last[i + w[v]] = v;
 
            if (l <= i + w[v] && i + w[v] <= u) {
                p = i + w[v];
                goto finish;
            }
        }
        highest += w[v];
    }
 
    return vector<int>{};
 
    finish:
 
    vector <int> output;
 
    // int i = 15;
    while (p != 0)
    {
        output.emplace_back(last[p]);
        // cout << "p" << p << endl;
        p -= w[last[p]];
    }
 
    return output;
}

Compilation message (stderr)

molecules.cpp:59:2: error: stray '#' in program
   59 | }#include<bits/stdc++.h>
      |  ^
molecules.cpp:59:3: error: 'include' does not name a type
   59 | }#include<bits/stdc++.h>
      |   ^~~~~~~
molecules.cpp:66:15: error: redefinition of 'constexpr const int maxu'
   66 | constexpr int maxu = 5e5 + 5;
      |               ^~~~
molecules.cpp:8:15: note: 'constexpr const int maxu' previously defined here
    8 | constexpr int maxu = 5e5 + 5;
      |               ^~~~
molecules.cpp:68:5: error: redefinition of 'int last [500005]'
   68 | int last[maxu] = { 0 };
      |     ^~~~
molecules.cpp:10:5: note: 'int last [500005]' previously defined here
   10 | int last[maxu] = { 0 };
      |     ^~~~
molecules.cpp:70:6: error: redefinition of 'bool found [500005]'
   70 | bool found[maxu] = { 0 };
      |      ^~~~~
molecules.cpp:12:6: note: 'bool found [500005]' previously defined here
   12 | bool found[maxu] = { 0 };
      |      ^~~~~
molecules.cpp:72:18: error: redefinition of 'std::vector<int> find_subset(int, int, std::vector<int>)'
   72 | std::vector<int> find_subset(int l, int u, std::vector<int> w) {
      |                  ^~~~~~~~~~~
molecules.cpp:14:18: note: 'std::vector<int> find_subset(int, int, std::vector<int>)' previously defined here
   14 | std::vector<int> find_subset(int l, int u, std::vector<int> w) {
      |                  ^~~~~~~~~~~