#include <stdio.h>
#include <stdlib.h>
#define MAX 20
#define MAX_K 3
typedef struct Peca{
int top[ 3 ] ;
int bot[ 3 ] ;
int left[ 3 ] ;
int right[ 3 ] ;
int pos[ 2 ] ;
int up;
} Peca;
int recurcao( int score, int a, int x, int y) ;
int check( int aux, struct Peca * temp, int z) ;
struct Peca* rotate( struct Peca * temp) ;
struct Peca* createPeca( int a, int b, int c, int x, int y) ;
int npecas= 0 ;
struct Peca * pecas[ 20 ] ;
int input[ 20 ] [ 4 ] ;
int todas;
int tabuleiro[ 20 ] [ 20 ] ;
int main( void ) {
int a, b, c;
int res= 0 , restemp;
char buffer [ 10 ] ;
int cnt= 0 ;
//struct Peca * nova = rotate(createPeca(1,2,4,0,1));
//printf("%d,%d,%d,%d\n",nova->top[0],nova->right[0],nova->bot[0],nova->left[0]);
while ( fgets ( buffer
, sizeof ( buffer
) , stdin
) ) { if ( sscanf ( buffer
, "%d %d %d" ,& a
, & b
, & c
) == 3 ) { input[ cnt] [ 0 ] = a;
input[ cnt] [ 1 ] = b;
input[ cnt] [ 2 ] = c;
input[ cnt] [ 3 ] = 0 ;
cnt= cnt+ 1 ;
} else {
break ;
}
}
todas= cnt;
int i, j;
/*preenche tabuleiro*/
for ( i= 0 ; i< 20 ; i++ ) {
for ( j= 0 ; j< 20 ; j++ ) {
tabuleiro[ i] [ j] =- 1 ;
}
}
for ( i= 0 ; i< todas; i++ ) {
restemp = recurcao( 0 , i, 10 , 10 ) ;
//printf("%d\n",restemp);
if ( restemp> res) {
res= restemp;
}
}
return 0 ;
}
int recurcao( int score, int a, int x, int y) {
//printf("%d\n",score);
int i, j, k;
int aux;
int aux2, aux1, scoreTemp;
input[ a] [ 3 ] = 1 ;
struct Peca * nova = createPeca( input[ a] [ 0 ] , input[ a] [ 1 ] , input[ a] [ 2 ] , x, y) ;
printf ( "%d - %d %d,%d %d %d %d\n " , npecas
, nova
-> pos
[ 0 ] , nova
-> pos
[ 1 ] , nova
-> bot
[ 0 ] , nova
-> left
[ 0 ] , nova
-> top
[ 0 ] , nova
-> right
[ 0 ] ) ; aux= check( 0 , nova, 0 ) ;
printf ( "%d - %d %d,%d %d %d %d\n " , npecas
, nova
-> pos
[ 0 ] , nova
-> pos
[ 1 ] , nova
-> bot
[ 0 ] , nova
-> left
[ 0 ] , nova
-> top
[ 0 ] , nova
-> right
[ 0 ] ) ; if ( aux==- 1 ) {
return 0 ;
}
pecas[ npecas] = nova;
tabuleiro[ x] [ y] = npecas;
npecas++;
if ( npecas == todas) {
return score;
}
for ( i= 0 ; i< npecas; i++ ) {
if ( pecas[ i] -> up) {
if ( pecas[ i] -> bot[ 2 ] == 0 ) {
aux2 = pecas[ i] -> bot[ 0 ] ;
aux1 = pecas[ i] -> bot[ 1 ] ;
for ( k= 0 ; k< todas; k++ ) {
if ( input[ k] [ 3 ] == 0 ) {
if ( ( ( input[ k] [ 0 ] == aux1) && ( input[ k] [ 1 ] == aux2) )
|| ( ( input[ k] [ 1 ] == aux1) && ( input[ k] [ 2 ] == aux2) )
|| ( ( input[ k] [ 2 ] == aux1) && ( input[ k] [ 0 ] == aux2) ) ) {
scoreTemp = recurcao( score, k, pecas[ i] -> pos[ 0 ] - 1 , pecas[ i] -> pos[ 1 ] ) ;
if ( scoreTemp> score) {
score= scoreTemp;
}
}
}
}
}
if ( pecas[ i] -> left[ 2 ] == 0 ) {
aux2 = pecas[ i] -> left[ 0 ] ;
aux1 = pecas[ i] -> left[ 1 ] ;
for ( k= 0 ; k< todas; k++ ) {
if ( input[ k] [ 3 ] == 0 ) {
if ( ( ( input[ k] [ 0 ] == aux1) && ( input[ k] [ 1 ] == aux2) )
|| ( ( input[ k] [ 1 ] == aux1) && ( input[ k] [ 2 ] == aux2) )
|| ( ( input[ k] [ 2 ] == aux1) && ( input[ k] [ 0 ] == aux2) ) ) {
scoreTemp = recurcao( score, k, pecas[ i] -> pos[ 0 ] , pecas[ i] -> pos[ 1 ] - 1 ) ;
if ( scoreTemp> score) {
score= scoreTemp;
}
}
}
}
}
if ( pecas[ i] -> right[ 2 ] == 0 ) {
aux1 = pecas[ i] -> right[ 0 ] ;
aux2 = pecas[ i] -> right[ 1 ] ;
for ( k= 0 ; k< todas; k++ ) {
if ( input[ k] [ 3 ] == 0 ) {
if ( ( ( input[ k] [ 0 ] == aux1) && ( input[ k] [ 1 ] == aux2) ) ||
( ( input[ k] [ 1 ] == aux1) && ( input[ k] [ 2 ] == aux2) ) ||
( ( input[ k] [ 2 ] == aux1) && ( input[ k] [ 0 ] == aux2) ) ) {
scoreTemp = recurcao( score, k, pecas[ i] -> pos[ 0 ] , pecas[ i] -> pos[ 1 ] + 1 ) ;
if ( scoreTemp> score) {
score= scoreTemp;
}
}
}
}
}
}
else {
if ( pecas[ i] -> top[ 2 ] == 0 ) {
aux2 = pecas[ i] -> top[ 0 ] ;
aux1 = pecas[ i] -> top[ 1 ] ;
for ( k= 0 ; k< todas; k++ ) {
if ( input[ k] [ 3 ] == 0 ) {
if ( ( ( input[ k] [ 0 ] == aux1) && ( input[ k] [ 1 ] == aux2) )
|| ( ( input[ k] [ 1 ] == aux1) && ( input[ k] [ 2 ] == aux2) )
|| ( ( input[ k] [ 2 ] == aux1) && ( input[ k] [ 0 ] == aux2) ) ) {
scoreTemp = recurcao( score, k, pecas[ i] -> pos[ 0 ] + 1 , pecas[ i] -> pos[ 1 ] ) ;
if ( scoreTemp> score) {
score= scoreTemp;
}
}
}
}
}
if ( pecas[ i] -> right[ 2 ] == 0 ) {
aux2 = pecas[ i] -> right[ 0 ] ;
aux1 = pecas[ i] -> right[ 1 ] ;
for ( k= 0 ; k< todas; k++ ) {
if ( input[ k] [ 3 ] == 0 ) {
if ( ( ( input[ k] [ 0 ] == aux1) && ( input[ k] [ 1 ] == aux2) )
|| ( ( input[ k] [ 1 ] == aux1) && ( input[ k] [ 2 ] == aux2) )
|| ( ( input[ k] [ 2 ] == aux1) && ( input[ k] [ 0 ] == aux2) ) ) {
scoreTemp = recurcao( score, k, pecas[ i] -> pos[ 0 ] , pecas[ i] -> pos[ 1 ] + 1 ) ;
if ( scoreTemp> score) {
score= scoreTemp;
}
}
}
}
}
if ( pecas[ i] -> left[ 2 ] == 0 ) {
aux2 = pecas[ i] -> left[ 0 ] ;
aux1 = pecas[ i] -> left[ 1 ] ;
for ( k= 0 ; k< todas; k++ ) {
if ( input[ k] [ 3 ] == 0 ) {
if ( ( ( input[ k] [ 0 ] == aux1) && ( input[ k] [ 1 ] == aux2) )
|| ( ( input[ k] [ 1 ] == aux1) && ( input[ k] [ 2 ] == aux2) )
|| ( ( input[ k] [ 2 ] == aux1) && ( input[ k] [ 0 ] == aux2) ) ) {
scoreTemp = recurcao( score, k, pecas[ i] -> pos[ 0 ] , pecas[ i] -> pos[ 1 ] - 1 ) ;
if ( scoreTemp> score) {
score= scoreTemp;
}
}
}
}
}
}
}
input[ a] [ 3 ] = 0 ;
//free(pecas[npecas]);
npecas--;
tabuleiro[ x] [ y] =- 1 ;
/*DESOCUPAR FACES*/
if ( nova-> up) {
if ( tabuleiro[ x- 1 ] [ y] !=- 1 ) {
pecas[ tabuleiro[ x- 1 ] [ y] ] -> top[ 2 ] = 0 ;
}
if ( tabuleiro[ x] [ y+ 1 ] !=- 1 ) {
pecas[ tabuleiro[ x] [ y+ 1 ] ] -> left[ 2 ] = 0 ;
}
if ( tabuleiro[ x] [ y- 1 ] !=- 1 ) {
pecas[ tabuleiro[ x] [ y- 1 ] ] -> right[ 2 ] = 0 ;
}
} else {
if ( tabuleiro[ x+ 1 ] [ y] !=- 1 ) {
pecas[ tabuleiro[ x+ 1 ] [ y] ] -> bot[ 2 ] = 0 ;
}
if ( tabuleiro[ x] [ y+ 1 ] !=- 1 ) {
pecas[ tabuleiro[ x] [ y+ 1 ] ] -> left[ 2 ] = 0 ;
}
if ( tabuleiro[ x] [ y- 1 ] !=- 1 ) {
pecas[ tabuleiro[ x] [ y- 1 ] ] -> right[ 2 ] = 0 ;
}
}
for ( i= 0 ; i< npecas; i++ ) {
}
printf ( "score aux %d %d\n " , score
, aux
) ; score += aux;
return score;
}
int check( int aux, struct Peca * temp, int z) {
if ( z> 2 )
return - 1 ;
int x= temp-> pos[ 0 ] , y = temp-> pos[ 1 ] ;
if ( tabuleiro[ x] [ y] !=- 1 ) {
return- 1 ;
}
if ( temp-> up) {
if ( tabuleiro[ x- 1 ] [ y] !=- 1 ) {
if ( pecas[ tabuleiro[ x- 1 ] [ y] ] -> top[ 0 ] != temp-> bot[ 1 ] || pecas[ tabuleiro[ x- 1 ] [ y] ] -> top[ 1 ] != temp-> bot[ 0 ] ) {
* temp = * ( rotate( temp) ) ;
return check( aux, temp, z+ 1 ) ;
}
}
/*if(tabuleiro[x+1][y]!=-1){
if(pecas[tabuleiro[x+1][y]]->bot[0] != temp->top[0]){
temp = rotate(temp);
return check(aux,temp,z+1);
}
}*/
if ( tabuleiro[ x] [ y+ 1 ] !=- 1 ) {
if ( pecas[ tabuleiro[ x] [ y+ 1 ] ] -> left[ 0 ] != temp-> right[ 1 ] || pecas[ tabuleiro[ x] [ y+ 1 ] ] -> left[ 1 ] != temp-> right[ 0 ] ) {
* temp = * ( rotate( temp) ) ;
return check( aux, temp, z+ 1 ) ;
}
}
if ( tabuleiro[ x] [ y- 1 ] !=- 1 ) {
if ( pecas[ tabuleiro[ x] [ y- 1 ] ] -> right[ 0 ] != temp-> left[ 1 ] || pecas[ tabuleiro[ x] [ y- 1 ] ] -> right[ 1 ] != temp-> left[ 0 ] ) {
* temp = * ( rotate( temp) ) ;
return check( aux, temp, z+ 1 ) ;
}
}
} else {
/*if(tabuleiro[x-1][y]!=-1){
if(pecas[tabuleiro[x-1][y]]->top[0] != temp->bot[0]){
temp = rotate(temp);
return check(aux,temp,z+1);
}
}*/
if ( tabuleiro[ x+ 1 ] [ y] !=- 1 ) {
if ( pecas[ tabuleiro[ x+ 1 ] [ y] ] -> bot[ 0 ] != temp-> top[ 1 ] || pecas[ tabuleiro[ x+ 1 ] [ y] ] -> bot[ 1 ] != temp-> top[ 0 ] ) {
* temp = * ( rotate( temp) ) ;
return check( aux, temp, z+ 1 ) ;
}
}
if ( tabuleiro[ x] [ y+ 1 ] !=- 1 ) {
if ( pecas[ tabuleiro[ x] [ y+ 1 ] ] -> left[ 0 ] != temp-> right[ 1 ] || pecas[ tabuleiro[ x] [ y+ 1 ] ] -> left[ 1 ] != temp-> right[ 0 ] ) {
* temp = * ( rotate( temp) ) ;
return check( aux, temp, z+ 1 ) ;
}
}
if ( tabuleiro[ x] [ y- 1 ] !=- 1 ) {
if ( pecas[ tabuleiro[ x] [ y- 1 ] ] -> right[ 0 ] != temp-> left[ 1 ] || pecas[ tabuleiro[ x] [ y- 1 ] ] -> right[ 1 ] != temp-> left[ 0 ] ) {
* temp = * ( rotate( temp) ) ;
return check( aux, temp, z+ 1 ) ;
}
}
}
/*CALC SCORE + OCUPAR*/
if ( temp-> up) {
if ( tabuleiro[ x- 1 ] [ y] !=- 1 ) {
pecas[ tabuleiro[ x- 1 ] [ y] ] -> top[ 2 ] = 1 ;
temp-> bot[ 2 ] = 1 ;
aux+= temp-> bot[ 0 ] + temp-> bot[ 1 ] ;
}
if ( tabuleiro[ x] [ y+ 1 ] !=- 1 ) {
pecas[ tabuleiro[ x] [ y+ 1 ] ] -> left[ 2 ] = 1 ;
temp-> right[ 2 ] = 1 ;
aux+= temp-> right[ 0 ] + temp-> right[ 1 ] ;
}
if ( tabuleiro[ x] [ y- 1 ] !=- 1 ) {
pecas[ tabuleiro[ x] [ y- 1 ] ] -> right[ 2 ] = 1 ;
temp-> left[ 2 ] = 1 ;
aux+= temp-> left[ 0 ] + temp-> left[ 1 ] ;
}
} else {
if ( tabuleiro[ x+ 1 ] [ y] !=- 1 ) {
pecas[ tabuleiro[ x+ 1 ] [ y] ] -> bot[ 2 ] = 1 ;
temp-> top[ 2 ] = 1 ;
aux= temp-> top[ 0 ] + temp-> top[ 1 ] ;
}
if ( tabuleiro[ x] [ y+ 1 ] !=- 1 ) {
pecas[ tabuleiro[ x] [ y+ 1 ] ] -> left[ 2 ] = 1 ;
temp-> right[ 2 ] = 1 ;
aux+= temp-> right[ 0 ] + temp-> right[ 1 ] ;
}
if ( tabuleiro[ x] [ y- 1 ] !=- 1 ) {
pecas[ tabuleiro[ x] [ y- 1 ] ] -> right[ 2 ] = 1 ;
temp-> left[ 2 ] = 1 ;
aux+= temp-> left[ 0 ] + temp-> left[ 1 ] ;
}
}
return aux;
}
struct Peca * rotate( struct Peca * temp) {
int aux[ 3 ] ;
struct Peca * nova;
if ( temp-> up) {
aux[ 0 ] = temp-> left[ 0 ] ;
aux[ 1 ] = temp-> right[ 0 ] ;
aux[ 2 ] = temp-> bot[ 0 ] ;
nova = createPeca( aux[ 0 ] , aux[ 1 ] , aux[ 2 ] , temp-> pos[ 0 ] , temp-> pos[ 1 ] ) ;
} else {
aux[ 0 ] = temp-> top[ 0 ] ;
aux[ 1 ] = temp-> right[ 0 ] ;
aux[ 2 ] = temp-> left[ 0 ] ;
nova = createPeca( aux[ 0 ] , aux[ 1 ] , aux[ 2 ] , temp-> pos[ 0 ] , temp-> pos[ 1 ] ) ;
}
return nova;
}
struct Peca* createPeca( int a, int b, int c, int x, int y) {
struct Peca
* temp
= malloc ( sizeof ( struct Peca
) ) ; if ( ( x+ y) % 2 == 0 ) {
temp-> up = 1 ;
temp-> bot[ 0 ] = a;
temp-> bot[ 1 ] = b;
temp-> bot[ 2 ] = 0 ;
temp-> left[ 0 ] = b;
temp-> left[ 1 ] = c;
temp-> left[ 2 ] = 0 ;
temp-> right[ 0 ] = c;
temp-> right[ 1 ] = a;
temp-> right[ 2 ] = 0 ;
temp-> top[ 0 ] = c;
temp-> top[ 1 ] = c;
} else {
temp-> up = 0 ;
temp-> left[ 0 ] = a;
temp-> left[ 1 ] = b;
temp-> left[ 2 ] = 0 ;
temp-> top[ 0 ] = b;
temp-> top[ 1 ] = c;
temp-> top[ 2 ] = 0 ;
temp-> right[ 0 ] = c;
temp-> right[ 1 ] = a;
temp-> right[ 2 ] = 0 ;
temp-> bot[ 0 ] = a;
temp-> bot[ 1 ] = a;
}
temp-> pos[ 0 ] = x;
temp-> pos[ 1 ] = y;
return temp;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2RlZmluZSBNQVggMjAKI2RlZmluZSBNQVhfSyAzCgp0eXBlZGVmIHN0cnVjdCBQZWNhewogCWludCB0b3BbM107CiAJaW50IGJvdFszXTsKIAlpbnQgbGVmdFszXTsKIAlpbnQgcmlnaHRbM107CiAJaW50IHBvc1syXTsKCWludCB1cDsKfVBlY2E7CgppbnQgcmVjdXJjYW8oaW50IHNjb3JlLCBpbnQgYSwgaW50IHgsIGludCB5KTsKaW50IGNoZWNrKGludCBhdXgsIHN0cnVjdCBQZWNhICp0ZW1wLGludCB6KTsKc3RydWN0IFBlY2EqIHJvdGF0ZShzdHJ1Y3QgUGVjYSAqdGVtcCk7CnN0cnVjdCBQZWNhKiBjcmVhdGVQZWNhKCBpbnQgYSxpbnQgYixpbnQgYyxpbnQgeCxpbnQgeSk7CgppbnQgbnBlY2FzPTA7CnN0cnVjdCBQZWNhICpwZWNhc1syMF07CmludCBpbnB1dFsyMF1bNF07CmludCB0b2RhczsKaW50IHRhYnVsZWlyb1syMF1bMjBdOwoKaW50IG1haW4odm9pZCkgewoJaW50IGEsIGIsIGM7CglpbnQgcmVzPTAsIHJlc3RlbXA7CgljaGFyIGJ1ZmZlciBbMTBdOwoJaW50IGNudD0wOwoJLy9zdHJ1Y3QgUGVjYSAqIG5vdmEgPSByb3RhdGUoY3JlYXRlUGVjYSgxLDIsNCwwLDEpKTsKCS8vcHJpbnRmKCIlZCwlZCwlZCwlZFxuIixub3ZhLT50b3BbMF0sbm92YS0+cmlnaHRbMF0sbm92YS0+Ym90WzBdLG5vdmEtPmxlZnRbMF0pOwoJd2hpbGUoZmdldHMgKGJ1ZmZlcixzaXplb2YoYnVmZmVyKSxzdGRpbikpewoJCWlmIChzc2NhbmYoYnVmZmVyLCIlZCAlZCAlZCIsJmEsICZiLCAmYyk9PTMpewoJCQlpbnB1dFtjbnRdWzBdPWE7CgkJCWlucHV0W2NudF1bMV09YjsKCQkJaW5wdXRbY250XVsyXT1jOwoJCQlpbnB1dFtjbnRdWzNdPTA7CgkJCWNudD1jbnQrMTsKCQl9ZWxzZXsKCQkJYnJlYWs7CgkJfQoJfQoKCXRvZGFzPWNudDsKCWludCBpLGo7CgkvKnByZWVuY2hlIHRhYnVsZWlybyovCglmb3IoaT0wO2k8MjA7aSsrKXsKCQlmb3Ioaj0wO2o8MjA7aisrKXsKCQkJdGFidWxlaXJvW2ldW2pdPS0xOwoJCX0KCX0KCWZvcihpPTA7aTx0b2RhcztpKyspewoJCXJlc3RlbXAgPSByZWN1cmNhbygwLGksMTAsMTApOwoJCS8vcHJpbnRmKCIlZFxuIixyZXN0ZW1wKTsKCQlpZiAocmVzdGVtcD5yZXMpewoJCQlyZXM9cmVzdGVtcDsKCQl9CgoJfQoJcHJpbnRmKCIlZFxuIixyZXMpOwoJcmV0dXJuIDA7Cn0KCmludCByZWN1cmNhbyhpbnQgc2NvcmUsIGludCBhLCBpbnQgeCwgaW50IHkpewoKICAvL3ByaW50ZigiJWRcbiIsc2NvcmUpOwoJaW50IGksIGosIGs7CglpbnQgYXV4OwoJaW50IGF1eDIsIGF1eDEsIHNjb3JlVGVtcDsKCWlucHV0W2FdWzNdPTE7CgkKCXN0cnVjdCBQZWNhICpub3ZhID0gY3JlYXRlUGVjYShpbnB1dFthXVswXSxpbnB1dFthXVsxXSxpbnB1dFthXVsyXSx4LHkpOwoJcHJpbnRmKCIlZCAtICVkICVkLCVkICVkICVkICVkXG4iLG5wZWNhcyxub3ZhLT5wb3NbMF0sbm92YS0+cG9zWzFdLG5vdmEtPmJvdFswXSxub3ZhLT5sZWZ0WzBdLG5vdmEtPnRvcFswXSxub3ZhLT5yaWdodFswXSk7CglhdXg9Y2hlY2soMCxub3ZhLDApOwoJcHJpbnRmKCIlZFxuIixhdXgpOwoJcHJpbnRmKCIlZCAtICVkICVkLCVkICVkICVkICVkXG4iLG5wZWNhcyxub3ZhLT5wb3NbMF0sbm92YS0+cG9zWzFdLG5vdmEtPmJvdFswXSxub3ZhLT5sZWZ0WzBdLG5vdmEtPnRvcFswXSxub3ZhLT5yaWdodFswXSk7CglpZihhdXg9PS0xKXsKCQlyZXR1cm4gMDsKCX0KCXBlY2FzW25wZWNhc10gPSBub3ZhOwoJdGFidWxlaXJvW3hdW3ldPW5wZWNhczsKCW5wZWNhcysrOwoJaWYobnBlY2FzID09IHRvZGFzKXsKCQlyZXR1cm4gc2NvcmU7Cgl9CgoJZm9yKGk9MDtpPG5wZWNhcztpKyspewoJCWlmIChwZWNhc1tpXS0+dXApewoJCQlpZiAocGVjYXNbaV0tPmJvdFsyXT09MCl7CgkJCQlhdXgyID0gcGVjYXNbaV0tPmJvdFswXTsKCQkJCWF1eDEgPSBwZWNhc1tpXS0+Ym90WzFdOwoJCQkJZm9yIChrPTA7azx0b2RhcztrKyspewoJCQkJCWlmKGlucHV0W2tdWzNdPT0wKXsKCgkJCQkJCWlmKCgoaW5wdXRba11bMF09PWF1eDEpICYmIChpbnB1dFtrXVsxXT09YXV4MikpCgkJCQkJCXx8ICgoaW5wdXRba11bMV09PWF1eDEpICYmIChpbnB1dFtrXVsyXT09YXV4MikpCgkJCQkJCXx8ICgoaW5wdXRba11bMl09PWF1eDEpICYmIChpbnB1dFtrXVswXT09YXV4MikpICl7CgoJCQkJCQkJc2NvcmVUZW1wID0gcmVjdXJjYW8oc2NvcmUsayxwZWNhc1tpXS0+cG9zWzBdLTEscGVjYXNbaV0tPnBvc1sxXSk7CgkJCQkJCQlpZihzY29yZVRlbXA+c2NvcmUpewoJCQkJCQkJCXNjb3JlPXNjb3JlVGVtcDsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCQlpZiAocGVjYXNbaV0tPmxlZnRbMl09PTApewoJCQkJYXV4MiA9IHBlY2FzW2ldLT5sZWZ0WzBdOwoJCQkJYXV4MSA9IHBlY2FzW2ldLT5sZWZ0WzFdOwoJCQkJZm9yKGs9MDtrPHRvZGFzO2srKyl7CgkJCQkJaWYoaW5wdXRba11bM109PTApewoJCQkJCQlpZigoKGlucHV0W2tdWzBdPT1hdXgxKSAmJiAoaW5wdXRba11bMV09PWF1eDIpKQoJCQkJCQl8fAkoKGlucHV0W2tdWzFdPT1hdXgxKSAmJiAoaW5wdXRba11bMl09PWF1eDIpKQoJCQkJCQl8fAkoKGlucHV0W2tdWzJdPT1hdXgxKSAmJiAoaW5wdXRba11bMF09PWF1eDIpKSl7CgkJCQkJCQkKCQkJCQkJCXNjb3JlVGVtcCA9IHJlY3VyY2FvKHNjb3JlLGsscGVjYXNbaV0tPnBvc1swXSxwZWNhc1tpXS0+cG9zWzFdLTEpOwoJCQkJCQkJaWYoc2NvcmVUZW1wPnNjb3JlKXsKCQkJCQkJCQlzY29yZT1zY29yZVRlbXA7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCX0KCQkJaWYocGVjYXNbaV0tPnJpZ2h0WzJdPT0wKXsKCQkJCWF1eDEgPSBwZWNhc1tpXS0+cmlnaHRbMF07CgkJCQlhdXgyID0gcGVjYXNbaV0tPnJpZ2h0WzFdOwoJCQkJZm9yKGs9MDtrPHRvZGFzO2srKyl7CgkJCQkJaWYoaW5wdXRba11bM109PTApewoJCQkJCQlpZigoKGlucHV0W2tdWzBdPT1hdXgxKSAmJiAoaW5wdXRba11bMV09PWF1eDIpKSB8fAoJCQkJCQkJKChpbnB1dFtrXVsxXT09YXV4MSkgJiYgKGlucHV0W2tdWzJdPT1hdXgyKSkgfHwKCQkJCQkJCSgoaW5wdXRba11bMl09PWF1eDEpICYmIChpbnB1dFtrXVswXT09YXV4MikpCSl7CgoJCQkJCQkJc2NvcmVUZW1wID0gcmVjdXJjYW8oc2NvcmUsayxwZWNhc1tpXS0+cG9zWzBdLHBlY2FzW2ldLT5wb3NbMV0rMSk7CgkJCQkJCQlpZihzY29yZVRlbXA+c2NvcmUpewoJCQkJCQkJCXNjb3JlPXNjb3JlVGVtcDsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCQllbHNlewoJCQlpZiAocGVjYXNbaV0tPnRvcFsyXT09MCl7CgkJCQlhdXgyID0gcGVjYXNbaV0tPnRvcFswXTsKCQkJCWF1eDEgPSBwZWNhc1tpXS0+dG9wWzFdOwoJCQkJZm9yIChrPTA7azx0b2RhcztrKyspewoJCQkJCWlmKGlucHV0W2tdWzNdPT0wKXsKCQkJCQkJaWYoKChpbnB1dFtrXVswXT09YXV4MSkgJiYgKGlucHV0W2tdWzFdPT1hdXgyKSkKCQkJCQkJfHwgKChpbnB1dFtrXVsxXT09YXV4MSkgJiYgKGlucHV0W2tdWzJdPT1hdXgyKSkKCQkJCQkJfHwgKChpbnB1dFtrXVsyXT09YXV4MSkgJiYgKGlucHV0W2tdWzBdPT1hdXgyKSkgKXsKCQkJCQkJCXNjb3JlVGVtcCA9IHJlY3VyY2FvKHNjb3JlLGsscGVjYXNbaV0tPnBvc1swXSsxLHBlY2FzW2ldLT5wb3NbMV0pOwoJCQkJCQkJaWYoc2NvcmVUZW1wPnNjb3JlKXsKCQkJCQkJCQlzY29yZT1zY29yZVRlbXA7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCX0KCQkJaWYgKHBlY2FzW2ldLT5yaWdodFsyXT09MCl7CgkJCQlhdXgyID0gcGVjYXNbaV0tPnJpZ2h0WzBdOwoJCQkJYXV4MSA9IHBlY2FzW2ldLT5yaWdodFsxXTsKCQkJCWZvciAoaz0wO2s8dG9kYXM7aysrKXsKCQkJCQlpZihpbnB1dFtrXVszXT09MCl7CgkJCQkJCWlmKCgoaW5wdXRba11bMF09PWF1eDEpICYmIChpbnB1dFtrXVsxXT09YXV4MikpCgkJCQkJCXx8ICgoaW5wdXRba11bMV09PWF1eDEpICYmIChpbnB1dFtrXVsyXT09YXV4MikpCgkJCQkJCXx8ICgoaW5wdXRba11bMl09PWF1eDEpICYmIChpbnB1dFtrXVswXT09YXV4MikpICl7CgkJCQkJCQlzY29yZVRlbXAgPSByZWN1cmNhbyhzY29yZSxrLHBlY2FzW2ldLT5wb3NbMF0scGVjYXNbaV0tPnBvc1sxXSsxKTsKCQkJCQkJCWlmKHNjb3JlVGVtcD5zY29yZSl7CgkJCQkJCQkJc2NvcmU9c2NvcmVUZW1wOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9CgkJCWlmIChwZWNhc1tpXS0+bGVmdFsyXT09MCl7CgkJCQlhdXgyID0gcGVjYXNbaV0tPmxlZnRbMF07CgkJCQlhdXgxID0gcGVjYXNbaV0tPmxlZnRbMV07CgkJCQlmb3IgKGs9MDtrPHRvZGFzO2srKyl7CgkJCQkJaWYoaW5wdXRba11bM109PTApewoJCQkJCQlpZigoKGlucHV0W2tdWzBdPT1hdXgxKSAmJiAoaW5wdXRba11bMV09PWF1eDIpKQoJCQkJCQl8fCAoKGlucHV0W2tdWzFdPT1hdXgxKSAmJiAoaW5wdXRba11bMl09PWF1eDIpKQoJCQkJCQl8fCAoKGlucHV0W2tdWzJdPT1hdXgxKSAmJiAoaW5wdXRba11bMF09PWF1eDIpKSApewoJCQkJCQkJc2NvcmVUZW1wID0gcmVjdXJjYW8oc2NvcmUsayxwZWNhc1tpXS0+cG9zWzBdLHBlY2FzW2ldLT5wb3NbMV0tMSk7CgkJCQkJCQlpZihzY29yZVRlbXA+c2NvcmUpewoJCQkJCQkJCXNjb3JlPXNjb3JlVGVtcDsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCX0KCWlucHV0W2FdWzNdPTA7CgkvL2ZyZWUocGVjYXNbbnBlY2FzXSk7CglucGVjYXMtLTsKCXRhYnVsZWlyb1t4XVt5XT0tMTsKCgkvKkRFU09DVVBBUiBGQUNFUyovCglpZihub3ZhLT51cCl7CgkJaWYodGFidWxlaXJvW3gtMV1beV0hPS0xKXsKCQkJcGVjYXNbdGFidWxlaXJvW3gtMV1beV1dLT50b3BbMl09MDsKCQl9CgkJaWYodGFidWxlaXJvW3hdW3krMV0hPS0xKXsKCQkJcGVjYXNbdGFidWxlaXJvW3hdW3krMV1dLT5sZWZ0WzJdPTA7CgkJfQoJCWlmKHRhYnVsZWlyb1t4XVt5LTFdIT0tMSl7CgkJCXBlY2FzW3RhYnVsZWlyb1t4XVt5LTFdXS0+cmlnaHRbMl09MDsKCQl9Cgl9ZWxzZXsKCQlpZih0YWJ1bGVpcm9beCsxXVt5XSE9LTEpewoJCQlwZWNhc1t0YWJ1bGVpcm9beCsxXVt5XV0tPmJvdFsyXT0wOwoJCX0KCQlpZih0YWJ1bGVpcm9beF1beSsxXSE9LTEpewoJCQlwZWNhc1t0YWJ1bGVpcm9beF1beSsxXV0tPmxlZnRbMl0gPTA7CgkJfQoJCWlmKHRhYnVsZWlyb1t4XVt5LTFdIT0tMSl7CgkJCXBlY2FzW3RhYnVsZWlyb1t4XVt5LTFdXS0+cmlnaHRbMl0gPTA7CgkJfQoJfQoJZm9yKGk9MDtpPG5wZWNhcztpKyspewoJCXByaW50ZigiICIpOwoJfQoJcHJpbnRmKCJzY29yZSBhdXggJWQgJWRcbiIsc2NvcmUsYXV4KTsKCXNjb3JlICs9IGF1eDsKCQoJcHJpbnRmKCIlZFxuIixzY29yZSk7CglyZXR1cm4gc2NvcmU7Cn0KCmludCBjaGVjayhpbnQgYXV4LCBzdHJ1Y3QgUGVjYSAqdGVtcCxpbnQgeil7CgkKCWlmKHo+MikKCQlyZXR1cm4gLTE7CglpbnQgeD10ZW1wLT5wb3NbMF0seSA9dGVtcC0+cG9zWzFdOwoJaWYodGFidWxlaXJvW3hdW3ldIT0tMSl7CgkJcmV0dXJuLTE7Cgl9CglpZih0ZW1wLT51cCl7CgkJaWYodGFidWxlaXJvW3gtMV1beV0hPS0xKXsKCQkJaWYocGVjYXNbdGFidWxlaXJvW3gtMV1beV1dLT50b3BbMF0gIT0gdGVtcC0+Ym90WzFdIHx8IHBlY2FzW3RhYnVsZWlyb1t4LTFdW3ldXS0+dG9wWzFdICE9IHRlbXAtPmJvdFswXSl7CgkJCQkqdGVtcCA9ICoocm90YXRlKHRlbXApKTsKCQkJCQoJCQkJcmV0dXJuIGNoZWNrKGF1eCx0ZW1wLHorMSk7CgkJCX0KCQl9CgkJLyppZih0YWJ1bGVpcm9beCsxXVt5XSE9LTEpewoJCQlpZihwZWNhc1t0YWJ1bGVpcm9beCsxXVt5XV0tPmJvdFswXSAhPSB0ZW1wLT50b3BbMF0pewoJCQkJdGVtcCA9IHJvdGF0ZSh0ZW1wKTsKCQkJCXJldHVybiBjaGVjayhhdXgsdGVtcCx6KzEpOwoJCQl9CgkJfSovCgkJaWYodGFidWxlaXJvW3hdW3krMV0hPS0xKXsKCQkJaWYocGVjYXNbdGFidWxlaXJvW3hdW3krMV1dLT5sZWZ0WzBdICE9IHRlbXAtPnJpZ2h0WzFdIHx8IHBlY2FzW3RhYnVsZWlyb1t4XVt5KzFdXS0+bGVmdFsxXSAhPSB0ZW1wLT5yaWdodFswXSl7CgkJCQkqdGVtcCA9ICoocm90YXRlKHRlbXApKTsKCQkJCXJldHVybiBjaGVjayhhdXgsdGVtcCx6KzEpOwoJCQl9CgkJfQoJCWlmKHRhYnVsZWlyb1t4XVt5LTFdIT0tMSl7CgkJCWlmKHBlY2FzW3RhYnVsZWlyb1t4XVt5LTFdXS0+cmlnaHRbMF0gIT0gdGVtcC0+bGVmdFsxXSB8fCBwZWNhc1t0YWJ1bGVpcm9beF1beS0xXV0tPnJpZ2h0WzFdICE9IHRlbXAtPmxlZnRbMF0pewoJCQkJKnRlbXAgPSAqKHJvdGF0ZSh0ZW1wKSk7CgkJCQlyZXR1cm4gY2hlY2soYXV4LHRlbXAseisxKTsKCQkJfQoJCX0KCX1lbHNlewoJCS8qaWYodGFidWxlaXJvW3gtMV1beV0hPS0xKXsKCQkJaWYocGVjYXNbdGFidWxlaXJvW3gtMV1beV1dLT50b3BbMF0gIT0gdGVtcC0+Ym90WzBdKXsKCQkJCXRlbXAgPSByb3RhdGUodGVtcCk7CgkJCQlyZXR1cm4gY2hlY2soYXV4LHRlbXAseisxKTsKCQkJfQoJCX0qLwoJCWlmKHRhYnVsZWlyb1t4KzFdW3ldIT0tMSl7CgkJCWlmKHBlY2FzW3RhYnVsZWlyb1t4KzFdW3ldXS0+Ym90WzBdICE9IHRlbXAtPnRvcFsxXSB8fCBwZWNhc1t0YWJ1bGVpcm9beCsxXVt5XV0tPmJvdFsxXSAhPSB0ZW1wLT50b3BbMF0pewoJCQkJKnRlbXAgPSAqKHJvdGF0ZSh0ZW1wKSk7CgkJCQlyZXR1cm4gY2hlY2soYXV4LHRlbXAseisxKTsKCQkJfQoJCX0KCQlpZih0YWJ1bGVpcm9beF1beSsxXSE9LTEpewoJCQlpZihwZWNhc1t0YWJ1bGVpcm9beF1beSsxXV0tPmxlZnRbMF0gIT0gdGVtcC0+cmlnaHRbMV0gfHwgcGVjYXNbdGFidWxlaXJvW3hdW3krMV1dLT5sZWZ0WzFdICE9IHRlbXAtPnJpZ2h0WzBdKXsKCQkJCSp0ZW1wID0gKihyb3RhdGUodGVtcCkpOwoJCQkJcmV0dXJuIGNoZWNrKGF1eCx0ZW1wLHorMSk7CgkJCX0KCQl9CgkJaWYodGFidWxlaXJvW3hdW3ktMV0hPS0xKXsKCQkJaWYocGVjYXNbdGFidWxlaXJvW3hdW3ktMV1dLT5yaWdodFswXSAhPSB0ZW1wLT5sZWZ0WzFdIHx8IHBlY2FzW3RhYnVsZWlyb1t4XVt5LTFdXS0+cmlnaHRbMV0gIT0gdGVtcC0+bGVmdFswXSl7CgkJCQkqdGVtcCA9ICoocm90YXRlKHRlbXApKTsKCQkJCXJldHVybiBjaGVjayhhdXgsdGVtcCx6KzEpOwoJCQl9CgkJfQoJfQoJLypDQUxDIFNDT1JFICsgT0NVUEFSKi8KCWlmKHRlbXAtPnVwKXsKCQlpZih0YWJ1bGVpcm9beC0xXVt5XSE9LTEpewoJCQlwZWNhc1t0YWJ1bGVpcm9beC0xXVt5XV0tPnRvcFsyXT0xOwoJCQl0ZW1wLT5ib3RbMl09MTsKCQkJYXV4Kz10ZW1wLT5ib3RbMF0rdGVtcC0+Ym90WzFdOwoJCX0KCQlpZih0YWJ1bGVpcm9beF1beSsxXSE9LTEpewoJCQlwZWNhc1t0YWJ1bGVpcm9beF1beSsxXV0tPmxlZnRbMl09MTsKCQkJdGVtcC0+cmlnaHRbMl09MTsKCQkJYXV4Kz10ZW1wLT5yaWdodFswXSt0ZW1wLT5yaWdodFsxXTsKCQl9CgkJaWYodGFidWxlaXJvW3hdW3ktMV0hPS0xKXsKCQkJcGVjYXNbdGFidWxlaXJvW3hdW3ktMV1dLT5yaWdodFsyXT0xOwoJCQl0ZW1wLT5sZWZ0WzJdPTE7CgkJCWF1eCs9dGVtcC0+bGVmdFswXSt0ZW1wLT5sZWZ0WzFdOwoJCX0KCX1lbHNlewoJCWlmKHRhYnVsZWlyb1t4KzFdW3ldIT0tMSl7CgkJCXBlY2FzW3RhYnVsZWlyb1t4KzFdW3ldXS0+Ym90WzJdPTE7CgkJCXRlbXAtPnRvcFsyXT0xOwoJCQlhdXg9dGVtcC0+dG9wWzBdK3RlbXAtPnRvcFsxXTsKCQl9CgkJaWYodGFidWxlaXJvW3hdW3krMV0hPS0xKXsKCQkJcGVjYXNbdGFidWxlaXJvW3hdW3krMV1dLT5sZWZ0WzJdID0xOwoJCQl0ZW1wLT5yaWdodFsyXT0xOwoJCQlhdXgrPXRlbXAtPnJpZ2h0WzBdK3RlbXAtPnJpZ2h0WzFdOwoJCX0KCQlpZih0YWJ1bGVpcm9beF1beS0xXSE9LTEpewoJCQlwZWNhc1t0YWJ1bGVpcm9beF1beS0xXV0tPnJpZ2h0WzJdID0xOwoJCQl0ZW1wLT5sZWZ0WzJdID0xOwoJCQlhdXgrPXRlbXAtPmxlZnRbMF0rdGVtcC0+bGVmdFsxXTsKCQl9Cgl9CglyZXR1cm4gYXV4Owp9CgoKc3RydWN0IFBlY2EgKiByb3RhdGUoc3RydWN0IFBlY2EgKnRlbXApewoJaW50IGF1eFszXTsKCXN0cnVjdCBQZWNhICpub3ZhOwoJaWYodGVtcC0+dXApewoJCWF1eFswXSA9IHRlbXAtPmxlZnRbMF07CgkJYXV4WzFdID0gdGVtcC0+cmlnaHRbMF07CgkJYXV4WzJdID0gdGVtcC0+Ym90WzBdOwoJCW5vdmEgPSBjcmVhdGVQZWNhKGF1eFswXSxhdXhbMV0sYXV4WzJdLHRlbXAtPnBvc1swXSx0ZW1wLT5wb3NbMV0pOwoJfWVsc2V7CgkJYXV4WzBdID0gdGVtcC0+dG9wWzBdOwoJCWF1eFsxXSA9IHRlbXAtPnJpZ2h0WzBdOwoJCWF1eFsyXSA9IHRlbXAtPmxlZnRbMF07CgkJbm92YSA9IGNyZWF0ZVBlY2EoYXV4WzBdLGF1eFsxXSxhdXhbMl0sdGVtcC0+cG9zWzBdLHRlbXAtPnBvc1sxXSk7CgoJfQoJcmV0dXJuIG5vdmE7Cn0KCgpzdHJ1Y3QgUGVjYSogY3JlYXRlUGVjYSggaW50IGEsaW50IGIsaW50IGMsaW50IHgsaW50IHkpewoJc3RydWN0IFBlY2EqIHRlbXA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IFBlY2EpKTsKCWlmKCh4K3kpJTI9PTApewoJCXRlbXAtPnVwID0gMTsKCQl0ZW1wLT5ib3RbMF0gPSBhOwoJCXRlbXAtPmJvdFsxXSA9IGI7CgkJdGVtcC0+Ym90WzJdID0gMDsKCQl0ZW1wLT5sZWZ0WzBdID0gYjsKCQl0ZW1wLT5sZWZ0WzFdID0gYzsKCQl0ZW1wLT5sZWZ0WzJdID0gMDsKCQl0ZW1wLT5yaWdodFswXSA9IGM7CgkJdGVtcC0+cmlnaHRbMV0gPSBhOwoJCXRlbXAtPnJpZ2h0WzJdID0gIDA7CgkJdGVtcC0+dG9wWzBdID0gYzsKCQl0ZW1wLT50b3BbMV0gPSBjOwoJfWVsc2V7CgkJdGVtcC0+dXAgPSAwOwoJCXRlbXAtPmxlZnRbMF0gPSBhOwoJCXRlbXAtPmxlZnRbMV0gPSBiOwoJCXRlbXAtPmxlZnRbMl0gPSAwOwoJCXRlbXAtPnRvcFswXSA9ICBiOwoJCXRlbXAtPnRvcFsxXSA9ICBjOwoJCXRlbXAtPnRvcFsyXSA9ICAwOwoJCXRlbXAtPnJpZ2h0WzBdID0gYzsKCQl0ZW1wLT5yaWdodFsxXSA9IGE7CgkJdGVtcC0+cmlnaHRbMl0gPSAgMDsKCQl0ZW1wLT5ib3RbMF0gPSBhOwoJCXRlbXAtPmJvdFsxXSA9IGE7Cgl9Cgl0ZW1wLT5wb3NbMF0gPSB4OwoJdGVtcC0+cG9zWzFdID0geTsKCXJldHVybiB0ZW1wOwoKfQo=
stdout
0
0npecas colocadas: 1
teste
bot livre
left livre
right livre
npecas colocadas: 1
peca 0 - 5,5,2,3
2
7npecas colocadas: 2
teste
bot livre
left livre
right livre
npecas colocadas: 2
peca 0 - 5,5,2,3
peca 1 - 5,1,5,2
3
0npecas colocadas: 3
teste
bot livre
left livre
right livre
npecas colocadas: 3
peca 0 - 5,5,2,3
peca 1 - 5,1,5,2
peca 2 - 5,5,2,4
5
-1teste
teste2
top livre
npecas colocadas: 3
peca 0 - 5,5,2,3
peca 1 - 5,1,5,2
peca 2 - 5,5,2,4
4
10npecas colocadas: 4
teste
bot livre
left livre
right livre
teste
teste2
top livre
right livre
left livre
teste
bot livre
left livre
right livre
teste
bot livre
left livre
right livre
right livre
left livre
teste
bot livre
left livre
npecas colocadas: 3
peca 0 - 5,5,2,3
peca 1 - 5,1,0,2
peca 2 - 5,5,2,4
4
9npecas colocadas: 4
teste
bot livre
left livre
right livre
teste
teste2
top livre
right livre
left livre
teste
bot livre
left livre
right livre
npecas colocadas: 4
peca 0 - 5,5,2,3
peca 1 - 5,1,0,2
peca 2 - 5,1,2,4
peca 3 - 5,5,5,4
1
-1teste
teste2
top livre
right livre
left livre
right livre
teste
teste2
top livre
npecas colocadas: 2
peca 0 - 5,5,2,3
peca 1 - 5,1,0,2
4
10npecas colocadas: 3
teste
bot livre
left livre
right livre
npecas colocadas: 3
peca 0 - 5,5,2,3
peca 1 - 5,1,1,2
peca 2 - 5,5,4,5
3
0npecas colocadas: 4
teste
bot livre
left livre
right livre
teste
teste2
top livre
right livre
left livre
teste
bot livre
left livre
right livre
teste
bot livre
left livre
right livre
teste
teste2
top livre
right livre
left livre
npecas colocadas: 3
peca 0 - 5,5,2,3
peca 1 - 5,1,1,2
peca 2 - 5,5,4,5
3
-1teste
bot livre
left livre
right livre
right livre
left livre
1
0npecas colocadas: 1
teste
bot livre
left livre
npecas colocadas: 1
peca 0 - 5,5,1,2
0
7npecas colocadas: 2
teste
bot livre
left livre
npecas colocadas: 2
peca 0 - 5,1,1,2
peca 1 - 3,5,5,2
2
-1right livre
teste
teste2
top livre
right livre
left livre
right livre
stderr
*** Error in `./prog': double free or corruption (fasttop): 0x00002aeff82cb210 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x70bcb)[0x2aeff74e6bcb]
/lib/x86_64-linux-gnu/libc.so.6(+0x76f96)[0x2aeff74ecf96]
/lib/x86_64-linux-gnu/libc.so.6(+0x7778e)[0x2aeff74ed78e]
./prog(+0x15ef)[0x2aeff6b2d5ef]
./prog(+0x8a6)[0x2aeff6b2c8a6]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf1)[0x2aeff74962b1]
./prog(+0x90a)[0x2aeff6b2c90a]
======= Memory map: ========
2aeff6b2c000-2aeff6b2e000 r-xp 00000000 fd:00 20772867 /home/gLrTBl/prog
2aeff6b2e000-2aeff6b32000 rw-p 00000000 00:00 0
2aeff6b3b000-2aeff6b3d000 rw-p 00000000 00:00 0
2aeff6d2d000-2aeff6d2e000 r--p 00001000 fd:00 20772867 /home/gLrTBl/prog
2aeff6d2e000-2aeff6d2f000 rw-p 00002000 fd:00 20772867 /home/gLrTBl/prog
2aeff6d2f000-2aeff6d52000 r-xp 00000000 fd:00 6073359 /lib/x86_64-linux-gnu/ld-2.24.so
2aeff6f52000-2aeff6f53000 r--p 00023000 fd:00 6073359 /lib/x86_64-linux-gnu/ld-2.24.so
2aeff6f53000-2aeff6f54000 rw-p 00024000 fd:00 6073359 /lib/x86_64-linux-gnu/ld-2.24.so
2aeff6f54000-2aeff6f55000 rw-p 00000000 00:00 0
2aeff6f55000-2aeff7058000 r-xp 00000000 fd:00 6073388 /lib/x86_64-linux-gnu/libm-2.24.so
2aeff7058000-2aeff7257000 ---p 00103000 fd:00 6073388 /lib/x86_64-linux-gnu/libm-2.24.so
2aeff7257000-2aeff7258000 r--p 00102000 fd:00 6073388 /lib/x86_64-linux-gnu/libm-2.24.so
2aeff7258000-2aeff7259000 rw-p 00103000 fd:00 6073388 /lib/x86_64-linux-gnu/libm-2.24.so
2aeff7259000-2aeff7271000 r-xp 00000000 fd:00 6073345 /lib/x86_64-linux-gnu/libpthread-2.24.so
2aeff7271000-2aeff7470000 ---p 00018000 fd:00 6073345 /lib/x86_64-linux-gnu/libpthread-2.24.so
2aeff7470000-2aeff7471000 r--p 00017000 fd:00 6073345 /lib/x86_64-linux-gnu/libpthread-2.24.so
2aeff7471000-2aeff7472000 rw-p 00018000 fd:00 6073345 /lib/x86_64-linux-gnu/libpthread-2.24.so
2aeff7472000-2aeff7476000 rw-p 00000000 00:00 0
2aeff7476000-2aeff760b000 r-xp 00000000 fd:00 6073482 /lib/x86_64-linux-gnu/libc-2.24.so
2aeff760b000-2aeff780a000 ---p 00195000 fd:00 6073482 /lib/x86_64-linux-gnu/libc-2.24.so
2aeff780a000-2aeff780e000 r--p 00194000 fd:00 6073482 /lib/x86_64-linux-gnu/libc-2.24.so
2aeff780e000-2aeff7810000 rw-p 00198000 fd:00 6073482 /lib/x86_64-linux-gnu/libc-2.24.so
2aeff7810000-2aeff7814000 rw-p 00000000 00:00 0
2aeff7814000-2aeff782a000 r-xp 00000000 fd:00 6073326 /lib/x86_64-linux-gnu/libgcc_s.so.1
2aeff782a000-2aeff7a29000 ---p 00016000 fd:00 6073326 /lib/x86_64-linux-gnu/libgcc_s.so.1
2aeff7a29000-2aeff7a2a000 r--p 00015000 fd:00 6073326 /lib/x86_64-linux-gnu/libgcc_s.so.1
2aeff7a2a000-2aeff7a2b000 rw-p 00016000 fd:00 6073326 /lib/x86_64-linux-gnu/libgcc_s.so.1
2aeff82c9000-2aeff82eb000 rw-p 00000000 00:00 0 [heap]
2aeffc000000-2aeffc021000 rw-p 00000000 00:00 0
2aeffc021000-2af000000000 ---p 00000000 00:00 0
7ffe65503000-7ffe65524000 rw-p 00000000 00:00 0 [stack]
7ffe65540000-7ffe65542000 r-xp 00000000 00:00 0 [vdso]
7ffe65542000-7ffe65544000 r--p 00000000 00:00 0 [vvar]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]