#include <bits/stdc++.h>
using namespace std;
struct node{
string PartyName;
int Votes;
int TotalSeats;
node *next;
};
node *init(){
node *n = new node();
return n;
}
node *add(string name, int votes, int seats, node *prev = NULL){
node *n = new node();
n->PartyName = name;
n->Votes = votes;
n->TotalSeats = seats;
n->next = NULL;
if(prev != NULL){
prev->next = n;
}
return n;
}
void print(node *n){
cout <<"Name: " << n -> PartyName << endl;
cout <<"Vote Count: " << n -> Votes << endl;
cout <<"Seat count: " << n -> TotalSeats << endl;
cout << endl;
}
void find(const string& name, node *n){
if(n -> PartyName == name){
print(n);
return;
}
if(n -> next == NULL){
return;
}
find(name, n -> next);
}
node *removeElement(node *n){
if(n -> next != NULL){
removeElement(n -> next);
}
delete n;
return NULL;
}
int main(){
node *head[3];
head[0] = init();
node *pPar2 = head[0];
pPar2 = add("HLU", 292068, 50, pPar2);
pPar2 = add("LM", 79742, 13, pPar2);
pPar2 = add("FP", 107057, 11, pPar2);
head[1] = init();
node *pPar3 = head[1];
pPar3 = add("SDLPL", 37198, 3, pPar3);
pPar3 = add("LFGU", 204780, 32, pPar3);
pPar3 = add("LP", 110780, 10, pPar3);
pPar3 = add("SDPL", 108641, 13, pPar3);
head[2] = init();
head[2] -> next = pPar3;
pPar3 = head[1] -> next;
const string sname = "SDPL";
find(sname, head[0]);
find(sname, head[1]);
find(sname, head[2]);
find(sname, pPar2);
find(sname, pPar3);
pPar2 = add("SFP", 10000, 1, pPar2);
pPar3 = removeElement(pPar3);
head[1] -> next = NULL;
head[2] -> next = NULL;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3Qgbm9kZXsKICAgIHN0cmluZyBQYXJ0eU5hbWU7CiAgICBpbnQgVm90ZXM7CiAgICBpbnQgVG90YWxTZWF0czsKICAgIG5vZGUgKm5leHQ7Cn07Cgpub2RlICppbml0KCl7CiAgICBub2RlICpuID0gbmV3IG5vZGUoKTsKICAgIHJldHVybiBuOwp9Cm5vZGUgKmFkZChzdHJpbmcgbmFtZSwgaW50IHZvdGVzLCBpbnQgc2VhdHMsIG5vZGUgKnByZXYgPSBOVUxMKXsKICAgIG5vZGUgKm4gPSBuZXcgbm9kZSgpOwogICAgbi0+UGFydHlOYW1lID0gbmFtZTsKICAgIG4tPlZvdGVzID0gdm90ZXM7CiAgICBuLT5Ub3RhbFNlYXRzID0gc2VhdHM7CiAgICBuLT5uZXh0ID0gTlVMTDsKICAgIGlmKHByZXYgIT0gTlVMTCl7CiAgICAgICAgcHJldi0+bmV4dCA9IG47CiAgICB9CiAgICByZXR1cm4gbjsKfQoKdm9pZCBwcmludChub2RlICpuKXsKICAgIGNvdXQgPDwiTmFtZTogIiA8PCBuIC0+IFBhcnR5TmFtZSA8PCBlbmRsOwogICAgY291dCA8PCJWb3RlIENvdW50OiAiIDw8IG4gLT4gVm90ZXMgPDwgZW5kbDsKICAgIGNvdXQgPDwiU2VhdCBjb3VudDogIiA8PCAgbiAtPiBUb3RhbFNlYXRzIDw8IGVuZGw7CiAgICBjb3V0IDw8IGVuZGw7Cn0KCnZvaWQgZmluZChjb25zdCBzdHJpbmcmIG5hbWUsIG5vZGUgKm4pewogICAgaWYobiAtPiBQYXJ0eU5hbWUgPT0gbmFtZSl7CiAgICAgICAgcHJpbnQobik7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaWYobiAtPiBuZXh0ID09IE5VTEwpewogICAgICAgIHJldHVybjsKICAgIH0KICAgIGZpbmQobmFtZSwgbiAtPiBuZXh0KTsKfQoKbm9kZSAqcmVtb3ZlRWxlbWVudChub2RlICpuKXsKICAgIGlmKG4gLT4gbmV4dCAhPSBOVUxMKXsKICAgICAgICByZW1vdmVFbGVtZW50KG4gLT4gbmV4dCk7CiAgICB9CiAgICBkZWxldGUgbjsKICAgIHJldHVybiBOVUxMOwp9CgppbnQgbWFpbigpewogICAgbm9kZSAqaGVhZFszXTsKICAgIGhlYWRbMF0gPSBpbml0KCk7CiAgICBub2RlICpwUGFyMiA9IGhlYWRbMF07CiAgICBwUGFyMiA9IGFkZCgiSExVIiwgMjkyMDY4LCA1MCwgcFBhcjIpOwogICAgcFBhcjIgPSBhZGQoIkxNIiwgNzk3NDIsIDEzLCBwUGFyMik7CiAgICBwUGFyMiA9IGFkZCgiRlAiLCAxMDcwNTcsIDExLCBwUGFyMik7CiAgICBoZWFkWzFdID0gaW5pdCgpOwogICAgbm9kZSAqcFBhcjMgPSBoZWFkWzFdOwogICAgcFBhcjMgPSBhZGQoIlNETFBMIiwgMzcxOTgsIDMsIHBQYXIzKTsKICAgIHBQYXIzID0gYWRkKCJMRkdVIiwgMjA0NzgwLCAzMiwgcFBhcjMpOwogICAgcFBhcjMgPSBhZGQoIkxQIiwgMTEwNzgwLCAxMCwgcFBhcjMpOwogICAgcFBhcjMgPSBhZGQoIlNEUEwiLCAxMDg2NDEsIDEzLCBwUGFyMyk7CiAgICBoZWFkWzJdID0gaW5pdCgpOwogICAgaGVhZFsyXSAtPiBuZXh0ID0gcFBhcjM7CiAgICBwUGFyMyA9IGhlYWRbMV0gLT4gbmV4dDsKCgogICAgY29uc3Qgc3RyaW5nIHNuYW1lID0gIlNEUEwiOyAKICAgIGZpbmQoc25hbWUsIGhlYWRbMF0pOwogICAgZmluZChzbmFtZSwgaGVhZFsxXSk7CiAgICBmaW5kKHNuYW1lLCBoZWFkWzJdKTsKICAgIGZpbmQoc25hbWUsIHBQYXIyKTsKICAgIGZpbmQoc25hbWUsIHBQYXIzKTsKCiAgICBwUGFyMiA9IGFkZCgiU0ZQIiwgMTAwMDAsIDEsIHBQYXIyKTsKCiAgICBwUGFyMyA9IHJlbW92ZUVsZW1lbnQocFBhcjMpOwogICAgaGVhZFsxXSAtPiBuZXh0ID0gTlVMTDsKICAgIGhlYWRbMl0gLT4gbmV4dCA9IE5VTEw7CgogICAgcmV0dXJuIDA7Cn0=