#include <iostream>
#include <string>
#include <typeinfo>
#include <vector>
#include <algorithm>
using namespace std;
class movement
{
private:
static const int MAX_ROW_PER_TRACKER = 100;
static const int MIN_TO_START_CALC = 30;
static const int MAX_TRACKERS = 20;
struct tracker
{
int id;
double a[MAX_ROW_PER_TRACKER];
double b[MAX_ROW_PER_TRACKER];
double c;
};
vector<int> trackersOrder;
tracker* trackersArr[MAX_TRACKERS];
public:
movement();
void addRow(int a, int b, int c);
~movement();
};
movement::movement() : trackersOrder(MAX_TRACKERS)
{
}
void movement::addRow(int id, int a, int b)
{
int index;
auto searchID = find(trackersOrder.begin(), trackersOrder.end(), id);
if (searchID == trackersOrder.end())
{
auto freeLocation = find(trackersOrder.begin(), trackersOrder.end(), 0);
index = freeLocation - trackersOrder.begin();
trackersOrder.insert(trackersOrder.begin() + index, id);
trackersArr[index] = new tracker;
trackersArr[index]->id = id;
trackersArr[index]->a[0] = a;
trackersArr[index]->b[0] = b;
trackersArr[index]->c = 0;
}
}
movement::~movement()
{
}
int main() {
movement m;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dHlwZWluZm8+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxhbGdvcml0aG0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgbW92ZW1lbnQKewpwcml2YXRlOgogICAgc3RhdGljIGNvbnN0IGludCBNQVhfUk9XX1BFUl9UUkFDS0VSID0gMTAwOwogICAgc3RhdGljIGNvbnN0IGludCBNSU5fVE9fU1RBUlRfQ0FMQyA9IDMwOwogICAgc3RhdGljIGNvbnN0IGludCBNQVhfVFJBQ0tFUlMgPSAyMDsKCiAgICBzdHJ1Y3QgdHJhY2tlcgogICAgewogICAgICAgIGludCBpZDsKICAgICAgICBkb3VibGUgYVtNQVhfUk9XX1BFUl9UUkFDS0VSXTsKICAgICAgICBkb3VibGUgYltNQVhfUk9XX1BFUl9UUkFDS0VSXTsKICAgICAgICBkb3VibGUgYzsKICAgIH07CiAgICB2ZWN0b3I8aW50PiB0cmFja2Vyc09yZGVyOwogICAgdHJhY2tlciogdHJhY2tlcnNBcnJbTUFYX1RSQUNLRVJTXTsKCnB1YmxpYzoKICAgIG1vdmVtZW50KCk7CiAgICB2b2lkIGFkZFJvdyhpbnQgYSwgaW50IGIsIGludCBjKTsKICAgIH5tb3ZlbWVudCgpOwp9OwoKbW92ZW1lbnQ6Om1vdmVtZW50KCkgOiB0cmFja2Vyc09yZGVyKE1BWF9UUkFDS0VSUykKewp9Cgp2b2lkIG1vdmVtZW50OjphZGRSb3coaW50IGlkLCBpbnQgYSwgaW50IGIpCnsKICAgIGludCBpbmRleDsKICAgIGF1dG8gc2VhcmNoSUQgPSBmaW5kKHRyYWNrZXJzT3JkZXIuYmVnaW4oKSwgdHJhY2tlcnNPcmRlci5lbmQoKSwgaWQpOwogICAgaWYgKHNlYXJjaElEID09IHRyYWNrZXJzT3JkZXIuZW5kKCkpCiAgICB7CiAgICAgICAgYXV0byBmcmVlTG9jYXRpb24gPSBmaW5kKHRyYWNrZXJzT3JkZXIuYmVnaW4oKSwgdHJhY2tlcnNPcmRlci5lbmQoKSwgMCk7IAogICAgICAgIGluZGV4ID0gZnJlZUxvY2F0aW9uIC0gdHJhY2tlcnNPcmRlci5iZWdpbigpOwogICAgICAgIHRyYWNrZXJzT3JkZXIuaW5zZXJ0KHRyYWNrZXJzT3JkZXIuYmVnaW4oKSArIGluZGV4LCBpZCk7CiAgICAgICAgdHJhY2tlcnNBcnJbaW5kZXhdID0gbmV3IHRyYWNrZXI7CiAgICAgICAgdHJhY2tlcnNBcnJbaW5kZXhdLT5pZCA9IGlkOwogICAgICAgIHRyYWNrZXJzQXJyW2luZGV4XS0+YVswXSA9IGE7CiAgICAgICAgdHJhY2tlcnNBcnJbaW5kZXhdLT5iWzBdID0gYjsKICAgICAgICB0cmFja2Vyc0FycltpbmRleF0tPmMgPSAwOwogICAgfQoKfQoKbW92ZW1lbnQ6On5tb3ZlbWVudCgpCnsKfQoKaW50IG1haW4oKSB7Cgltb3ZlbWVudCBtOyAKfQ==