O problema dá um inteiro N e N pares de inteiros a seguir que são, respectivamente, um “comando” e um “elemento”. Ao receber o comando “1” o valor “elemento” deve ser inserido nas três estruturas de dados (ila, !il"a e #ista de !rioridades$. As %un&'es de inser&ão de remo&ão de cada uma delas deve ter sido implementada (alternativamente, podese usar os containers de )**$. Ao receber o comando “+” devese remover de cada estrutura e veri%icar se o valor removido o mesmo do elemento in%ormado. )aso algum dos valores removidos se-a di%erente do elemento lido, necessário marcar com uma %lag que a resposta não pode ser aquela estrutura. )aso as três %lag se-am ativadas, o resultado “impossible”. )aso apenas uma %lag se-a ativada o resultado “not sure” pois pode ser qualquer uma das duas estruturas. )aso duas %lags se-am ativadas, a resposta a estrutura correspondente %lag que não %oi ativada. )/digo0
/ ********************************************************************** ********************************** * "Eu Posso Adivinhar a Estrutura de Dados!" * * Problema 1340 @ UR nline ud#e * * $em%o& 0'004 * * * * * ********************************************************************** *********************** **********************************/ ***********/ (in)lude stdio'h+ (in)lude strin#'h+ (in)lude stdlib'h+ / ********************************************************************** * Estrutura de dados ti%o "sa)ola", )ont-.m a estrutura %ara * * a %ilha, ila e lista de %rioridades' * ********************************************************************** / t%ede stru)t ti%osa)ola 2 int elementoila10005 elementoila10005 int )ome)oila, )ome)oila, inalila5 int elemento%ilha10005 elemento%ilha10005 int indi)e%ilha5 indi)e%ilha5
int elementolista%rioridade10005 int indi)elista%rioridade5 6 ti%osa)ola5 / ********************************************************************** * 7un-8-9es de inser-8-:o e remo-8-:o %ara a Estrutura de Dados * * "7;A" <=ueue>' * ********************************************************************** / void insereila < int valor, ti%osa)ola *dado > 2 dado?+elementoila dado?+inalila valor5 6 int removeila < ti%osa)ola*dado > 2 i < dado?+)ome)oila dado?+inalila > 2 return ?100000005 6 return dado?+elementoila dado?+)ome)oila 5 6 / ********************************************************************** * 7un-8-9es de inser-8-:o e remo-8-:o %ara a Estrutura de Dados * * "P;BA"
' * ********************************************************************** / void insere%ilha < int valor, ti%osa)ola *dado >2 dado?+elemento%ilha dado?+indi)e%ilha valor5 6 int remove%ilha < ti%osa)ola *dado >2 i < dado?+indi)e%ilha 0 > 2 return ?100000005 6 return dado?+elemento%ilha dado?+indi)e%ilha?? 5 6 / ********************************************************************** * 7un-8-9es de inser-8-:o e remo-8-:o %ara a Estrutura de Dados * * ";C$A F PRRDADE" ou "7;A F PRRDADE" ' * ********************************************************************** /
void inserelista%rioridade < int valor, ti%osa)ola *dado >2 int indeGadorauGiliar5 indeGadorauGiliar dado?+indi)elista%rioridade5 Hhile < indeGadorauGiliar + 1 > 2 i < dado?+elementolista%rioridade indeGadorauGiliar/I valor > 2 dado?+elementolista%rioridade indeGadorauGiliar dado?+elementolista%rioridade indeGadorauGiliar/I 5 indeGadorauGiliarindeGadorauGiliar/I5 6 else brea5 6 dado?+elementolista%rioridade indeGadorauGiliar valor5 6 int removelista%rioridade < ti%osa)ola *dado > 2 int tem%orario, atual, %roGimo5 i < dado?+indi)elista%rioridade 0 > 2 return ?100000005 6 tem%orario dado?+elementolista%rioridade 1 5 atual 15 %roGimo I5 dado?+indi)elista%rioridade??5 Hhile < %roGimo dado?+indi)elista%rioridade > 2 i < %roGimo dado?+indi)elista%rioridade JJ dado? +elementolista%rioridade %roGimo1 + dado? +elementolista%rioridade %roGimo > 2 %roGimo5 6 i< dado?+elementolista%rioridade %roGimo + dado? +elementolista%rioridade dado?+indi)elista%rioridade1 > 2 dado?+elementolista%rioridade atual dado? +elementolista%rioridade %roGimo 5 atual %roGimo5 %roGimo atual*I5 6 else brea5 6 dado?+elementolista%rioridade atual dado? +elementolista%rioridade dado?+indi)elista%rioridade1 5 return tem%orario5 6 / ********************************************************************** * 7un-8-:o Prin)i%al' * ********************************************************************** / int main < int ar#), )har *ar#v > 2 int )omando, valor5
int n, i5 int la# 3 5 int re)ebido5 ti%osa)ola data5 Hhile < s)an < "Kd", Jn > ! E7 > 2 memset < la#, 0, siLeo< la# > >5 data')ome)oila 05 data'inalila 05 data'indi)e%ilha 05 data'indi)elista%rioridade 05
or < i05 in5 i > 2 s)an< "Kd Kd", J)omando, Jvalor >5 /********************************************************* * Ce o )omando or 1, insere o elemento em todas as * * estruturas' *
**********************************************************/ i < )omando 1 > 2 insereila < valor, Jdata >5 insere%ilha < valor, Jdata >5 inserelista%rioridade < valor, Jdata >5 6
/********************************************************* * Ce o )omando or I, remove o elemento em todas as * * estruturas' *
**********************************************************/ else 2 re)ebido removeila < Jdata >5 /***************************************************** * om%ara o valor obtido ao aLer a remo-8-:o das * * estruturas )om o dado re)ebido' Ce orem dierentes* * a la# deve ser MativadaM, identii)ando Nue o * * resultado n-:o %ode ser a estrutura )orres%ondente' * ******************************************************/ i < re)ebido ! valor > 2 la#0 15 6 re)ebido remove%ilha < Jdata >5 i < re)ebido ! valor > 2 la#1 15 6 re)ebido removelista%rioridade < Jdata >5 i < re)ebido ! valor > 2 la#I 15 6 6 6
/************************************************************* * Oo )aso de todas as tr-s la#s terem sido ativadas, n-:o
* * %ode ser nenhuma das tr-s estruturas, %ortanto, im%oss-? vel'* **************************************************************/ i < la# 0 la# 1 la# I 3 > %rint < "im%ossibleQn" >5
/************************************************************* * Oo )aso de terem sobrado duas la#s n-:o ativadas, %ode
* * duas estruturas dierentes, %ortanto, sem )erteLa
*
**************************************************************/ else i < la# 0 la# 1 la# I I > %rint < "not sureQn" >5 /************************************************************* * Ce a%enas uma la# n-:o tiver sido ativada, -. essa a * * estrutura utiliLada' * **************************************************************/ else 2 i < !la#0 > %rint < "NueueQn" >5 i < !la#1 > %rint < "sta)Qn" >5 i < !la#I > %rint < "%riorit NueueQn" >5 6 6 return 05 6