#ifndef _light_hpp_INCLUDED
#define _light_hpp_INCLUDED

#include "utils/paras.hpp"
#include "preprocess.hpp"
#include <atomic>
#include <iostream>
using namespace std;
typedef long long ll;

class basesolver;

struct light
{
public:
    light();
    ~light();

    char *filename;
    paras *opt;
    preprocess *pre;
    vec<basesolver *> solvers;

    int finalResult;
    int winner;
    int maxtime;
    atomic<bool> globalEnding;

    void arg_parse(int argc, char **argv);
    void init_solvers();
    void diversity_solvers();
    void parse_input();
    int  run();
    int  solve();
    void terminate_solvers();
    void print_model();
};

#endif