#include<stdlib.h>
#include<stdio.h>
typedef struct Point{
int x;
int y;
}Point;
typedef struct Polygon{
int num_vertices;
Point *vertices;
}Polygon;
void addPolygon(Polygon* ps, int n, int v){
int i;
for(i = 0; i<n; i++){
(ps
+i
)->vertices
= malloc(sizeof(Point
)*v
); (ps+i)->num_vertices = v;
}
}
int main() {
int n1=5, n2=10, v1=3, v2=4;
//n1個v1邊形: 5個3邊形
//n2個v2邊形: 10個4邊形
int i;
Polygon* ps;
ps
= malloc(sizeof(Polygon
)*(n1
+n2
)); for(i = 0; i<n1+n2;i++){
if(i<n1){
(ps
+i
)->vertices
= malloc(sizeof(Point
)*v1
); (ps+i)->num_vertices = v1;
}
else{
(ps
+i
)->vertices
= malloc(sizeof(Point
)*v2
); (ps+i)->num_vertices = v2;
}
}
for(i = 0; i<n1+n2;i++){
}
ps
= malloc(sizeof(Polygon
)*n1
); addPolygon(ps, n1, v1);
ps
= realloc(ps
, sizeof(Polygon
)*(n1
+n2
)); addPolygon(ps+n1, n2, v2);
for(i = 0; i<n1+n2;i++){
}
return EXIT_SUCCESS;
}
I2luY2x1ZGU8c3RkbGliLmg+CiNpbmNsdWRlPHN0ZGlvLmg+Cgp0eXBlZGVmIHN0cnVjdCBQb2ludHsKICAgIGludCB4OwogICAgaW50IHk7Cn1Qb2ludDsKCnR5cGVkZWYgc3RydWN0IFBvbHlnb257CiAgICBpbnQgbnVtX3ZlcnRpY2VzOwogICAgUG9pbnQgKnZlcnRpY2VzOwp9UG9seWdvbjsKCnZvaWQgYWRkUG9seWdvbihQb2x5Z29uKiBwcywgaW50IG4sIGludCB2KXsKICAgIGludCBpOwogICAgZm9yKGkgPSAwOyBpPG47IGkrKyl7CiAgICAgICAgKHBzK2kpLT52ZXJ0aWNlcyA9IG1hbGxvYyhzaXplb2YoUG9pbnQpKnYpOwogICAgICAgIChwcytpKS0+bnVtX3ZlcnRpY2VzID0gdjsKICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICBpbnQgbjE9NSwgbjI9MTAsIHYxPTMsIHYyPTQ7CiAgICAvL24x5YCLdjHpgorlvaI6IDXlgIsz6YKK5b2iCiAgICAvL24y5YCLdjLpgorlvaI6IDEw5YCLNOmCiuW9ogogICAgaW50IGk7CiAgICBQb2x5Z29uKiBwczsKICAgIHBzID0gbWFsbG9jKHNpemVvZihQb2x5Z29uKSoobjErbjIpKTsKICAgIGZvcihpID0gMDsgaTxuMStuMjtpKyspewogICAgICAgIGlmKGk8bjEpewogICAgICAgICAgICAocHMraSktPnZlcnRpY2VzID0gbWFsbG9jKHNpemVvZihQb2ludCkqdjEpOwogICAgICAgICAgICAocHMraSktPm51bV92ZXJ0aWNlcyA9IHYxOwogICAgICAgIH0KICAgICAgICBlbHNlewogICAgICAgICAgICAocHMraSktPnZlcnRpY2VzID0gbWFsbG9jKHNpemVvZihQb2ludCkqdjIpOwogICAgICAgICAgICAocHMraSktPm51bV92ZXJ0aWNlcyA9IHYyOwogICAgICAgIH0KICAgIH0KICAgIAogICAgZm9yKGkgPSAwOyBpPG4xK24yO2krKyl7CiAgICAgICAgZnJlZSgocHMraSktPnZlcnRpY2VzKTsKICAgIH0KICAgIGZyZWUocHMpOwogICAgCiAgICBwcyA9IG1hbGxvYyhzaXplb2YoUG9seWdvbikqbjEpOwogICAgYWRkUG9seWdvbihwcywgbjEsIHYxKTsKICAgIHBzID0gcmVhbGxvYyhwcywgc2l6ZW9mKFBvbHlnb24pKihuMStuMikpOwogICAgYWRkUG9seWdvbihwcytuMSwgbjIsIHYyKTsKICAgIGZvcihpID0gMDsgaTxuMStuMjtpKyspewogICAgICAgIGZyZWUoKHBzK2kpLT52ZXJ0aWNlcyk7CiAgICB9CiAgICBmcmVlKHBzKTsKICAgIAogICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKfQ==