#include <vector>
#include <string>
class BlockRepresentation
{
private:
class Block
{
public:
int id;
int fpDimensions;
std::vector<int> position; // pointers in question
std::vector<int> blockDimensions; // pointers in question
};
std::vector<Block> all_blocks;
public:
BlockRepresentation() {}
void AddBlock( int id, int fpDimensions, int position[], int dimensions[] );
std::string ToGPL();
};
void BlockRepresentation::AddBlock( int id, int fpDimensions, int position[], int dimensions[] )
{
Block newBlock;
newBlock.id = id;
newBlock.fpDimensions = fpDimensions;
newBlock.position = std::vector<int>(position, position + fpDimensions);
newBlock.blockDimensions = std::vector<int>(dimensions, dimensions + fpDimensions);
all_blocks.push_back( newBlock );
}
int main()
{
int x[] = {1,2,3,4,5};
int y[] = {2,4,6,8,10};
BlockRepresentation br;
br.AddBlock(1,5,x,y);
br.AddBlock(2,5,y,x);
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHN0cmluZz4KCmNsYXNzIEJsb2NrUmVwcmVzZW50YXRpb24KewogICAgcHJpdmF0ZToKICAgICAgICBjbGFzcyBCbG9jawogICAgICAgIHsKICAgICAgICAgICAgcHVibGljOgogICAgICAgICAgICAgICAgaW50IGlkOwogICAgICAgICAgICAgICAgaW50IGZwRGltZW5zaW9uczsKICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGludD4gcG9zaXRpb247ICAgICAgICAvLyBwb2ludGVycyBpbiBxdWVzdGlvbgogICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8aW50PiBibG9ja0RpbWVuc2lvbnM7IC8vIHBvaW50ZXJzIGluIHF1ZXN0aW9uCiAgICAgICAgfTsKICAgICAgICBzdGQ6OnZlY3RvcjxCbG9jaz4gYWxsX2Jsb2NrczsKICAgIHB1YmxpYzoKICAgICAgICBCbG9ja1JlcHJlc2VudGF0aW9uKCkge30KICAgICAgICB2b2lkIEFkZEJsb2NrKCBpbnQgaWQsIGludCBmcERpbWVuc2lvbnMsIGludCBwb3NpdGlvbltdLCBpbnQgZGltZW5zaW9uc1tdICk7CiAgICAgICAgc3RkOjpzdHJpbmcgVG9HUEwoKTsKfTsKCnZvaWQgQmxvY2tSZXByZXNlbnRhdGlvbjo6QWRkQmxvY2soIGludCBpZCwgaW50IGZwRGltZW5zaW9ucywgaW50IHBvc2l0aW9uW10sIGludCBkaW1lbnNpb25zW10gKQp7CiAgICBCbG9jayBuZXdCbG9jazsKICAgIG5ld0Jsb2NrLmlkID0gaWQ7CiAgICBuZXdCbG9jay5mcERpbWVuc2lvbnMgPSBmcERpbWVuc2lvbnM7CiAgICBuZXdCbG9jay5wb3NpdGlvbiA9IHN0ZDo6dmVjdG9yPGludD4ocG9zaXRpb24sIHBvc2l0aW9uICsgZnBEaW1lbnNpb25zKTsKICAgIG5ld0Jsb2NrLmJsb2NrRGltZW5zaW9ucyA9IHN0ZDo6dmVjdG9yPGludD4oZGltZW5zaW9ucywgZGltZW5zaW9ucyArIGZwRGltZW5zaW9ucyk7CiAgICBhbGxfYmxvY2tzLnB1c2hfYmFjayggbmV3QmxvY2sgKTsKfQoKaW50IG1haW4oKQp7CglpbnQgeFtdICA9IHsxLDIsMyw0LDV9OwoJaW50IHlbXSA9IHsyLDQsNiw4LDEwfTsKCUJsb2NrUmVwcmVzZW50YXRpb24gYnI7Cglici5BZGRCbG9jaygxLDUseCx5KTsKCWJyLkFkZEJsb2NrKDIsNSx5LHgpOwp9