/*こっから下がIntArray.h
#ifndef aaaa2020
#define aaaa2020
class IntArray{
public:
IntArray(int size);
~IntArray();
int Size();
public :
int Get(int i);
void Set(int i, int value);
private:
void CheckIndex(int i);
private:
int* m_array;
int m_size;
};
#endif
*/
/*こっから下がB.cpp
#include "IntArray.h"
#include<iostream>
#include<cstdlib>
using namespace std;
int IntArray::Size() {
return m_size;
}
IntArray::IntArray(int size) {
m_array = new int[size];
m_size = size;
}
IntArray::~IntArray() {
delete[]m_array;
}
int IntArray::Get(int i) {
return m_array[i];
}
void IntArray::Set(int i, int value) {
CheckIndex(i);
m_array[i] = value;
}
void IntArray::CheckIndex(int i) {
if (0 <= i && i < m_size) {
// ragular
}
else {
exit(EXIT_FAILURE);
}
}
*/
/*こっから下がAcpp
#include "IntArray.h"
#include<iostream>
using namespace std;
void Show(IntArray array) {
for (int i = 0; i < array.Size(); i++) {
cout << array.Get(i) << ' ';
}
cout << endl;
}
int main() {
IntArray array0to9(10);
for (int i = 0; i < array0to9.Size(); ++i) {
array0to9.Set(i, i);
}
Show(array0to9);
}*/
ICAgIAogICAgLyrjgZPjgaPjgYvjgonkuIvjgYxJbnRBcnJheS5oCiAgICAjaWZuZGVmICAgIGFhYWEyMDIwCiAgICAjZGVmaW5lICAgIGFhYWEyMDIwCiAgICAgCiAgICBjbGFzcyBJbnRBcnJheXsKICAgIHB1YmxpYzoKICAgIAlJbnRBcnJheShpbnQgc2l6ZSk7CiAgICAJfkludEFycmF5KCk7CiAgICAJaW50IFNpemUoKTsKICAgICAKICAgIHB1YmxpYyA6CiAgICAJaW50IEdldChpbnQgaSk7CiAgICAJdm9pZCBTZXQoaW50IGksIGludCB2YWx1ZSk7CiAgICAgCiAgICBwcml2YXRlOgogICAgCXZvaWQgQ2hlY2tJbmRleChpbnQgaSk7CiAgICAgCiAgICBwcml2YXRlOgogICAgCWludCogbV9hcnJheTsKICAgIAlpbnQgbV9zaXplOwogICAgfTsKICAgICAKICAgICNlbmRpZgogICAgKi8KICAgICAKICAgICAKICAgIC8q44GT44Gj44GL44KJ5LiL44GMQi5jcHAKICAgICNpbmNsdWRlICJJbnRBcnJheS5oIgogICAgI2luY2x1ZGU8aW9zdHJlYW0+CiAgICAjaW5jbHVkZTxjc3RkbGliPgogICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKICAgICAKICAgIGludCBJbnRBcnJheTo6U2l6ZSgpIHsKICAgIAlyZXR1cm4gbV9zaXplOwogICAgfQogICAgIAogICAgSW50QXJyYXk6OkludEFycmF5KGludCBzaXplKSB7CiAgICAJbV9hcnJheSA9IG5ldyBpbnRbc2l6ZV07CiAgICAJbV9zaXplID0gc2l6ZTsKICAgIH0KICAgICAKICAgIEludEFycmF5Ojp+SW50QXJyYXkoKSB7CiAgICAJZGVsZXRlW11tX2FycmF5OwogICAgfQogICAgIAogICAgaW50IEludEFycmF5OjpHZXQoaW50IGkpIHsKICAgIAlyZXR1cm4gbV9hcnJheVtpXTsKICAgIH0KICAgICAKICAgIHZvaWQgSW50QXJyYXk6OlNldChpbnQgaSwgaW50IHZhbHVlKSB7CiAgICAJQ2hlY2tJbmRleChpKTsKICAgIAltX2FycmF5W2ldID0gdmFsdWU7CiAgICB9CiAgICAgCiAgICB2b2lkIEludEFycmF5OjpDaGVja0luZGV4KGludCBpKSB7CiAgICAJaWYgKDAgPD0gaSAmJiBpIDwgbV9zaXplKSB7CiAgICAJCS8vIHJhZ3VsYXIKICAgIAl9CiAgICAJZWxzZSB7CiAgICAJCWV4aXQoRVhJVF9GQUlMVVJFKTsKICAgIAl9CiAgICB9CiAgICAqLwogICAgIAogICAgIAogICAgLyrjgZPjgaPjgYvjgonkuIvjgYxBY3BwCiAgICAjaW5jbHVkZSAiSW50QXJyYXkuaCIKICAgICNpbmNsdWRlPGlvc3RyZWFtPgogICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKICAgICAKICAgIHZvaWQgU2hvdyhJbnRBcnJheSBhcnJheSkgewogICAgCWZvciAoaW50IGkgPSAwOyBpIDwgYXJyYXkuU2l6ZSgpOyBpKyspIHsKICAgIAkJY291dCA8PCBhcnJheS5HZXQoaSkgPDwgJyAnOwogICAgCX0KICAgIAljb3V0IDw8IGVuZGw7CiAgICAgCiAgICAgCiAgICB9CiAgICAgCiAgICBpbnQgbWFpbigpIHsKICAgIAlJbnRBcnJheSBhcnJheTB0bzkoMTApOwogICAgIAogICAgCWZvciAoaW50IGkgPSAwOyBpIDwgYXJyYXkwdG85LlNpemUoKTsgKytpKSB7CiAgICAJCWFycmF5MHRvOS5TZXQoaSwgaSk7CiAgICAJfQogICAgCVNob3coYXJyYXkwdG85KTsKICAgIH0qLwogICAgIAogICAgIA==