#include #include #include #include struct lab { int desks, monitors; std::vector neighbours; }; int main() { int lab_count, pairs, queries; scanf("%d %d %d", &lab_count, &pairs, &queries); std::vector labs(lab_count); for(int i = 0; i < lab_count; i++) { scanf("%d", &labs[i].desks); } for(int i = 0; i < lab_count; i++) { scanf("%d", &labs[i].monitors); } //printf("starting state: \n"); for(int i = 0; i < lab_count; i++) { //printf("%d: %d\n", i, labs[i].desks); } for(int i = 0; i < lab_count; i++) { //printf("%d: %d\n", i, labs[i].monitors); } for(int i = 0; i < pairs; i++) { int a, b; scanf("%d %d", &a, &b); labs[a - 1].neighbours.push_back(b - 1); labs[b - 1].neighbours.push_back(a - 1); } for(int i = 0; i < queries; i++) { char vstup[10]; scanf(" %9s ", vstup); //printf("nacetl %s\n", vstup); if(strcmp(vstup, "add") == 0) { int index, count; scanf("%d %s %d", &count, vstup, &index); if(strcmp(vstup, "desk") == 0) { labs[index - 1].desks += count; } else { labs[index - 1].monitors += count; } } else { int index; scanf("%d", &index); int desks = labs[index - 1].desks; int monitors = labs[index - 1].monitors; for(int j = 0; j < labs[index - 1].neighbours.size(); j++) { lab &soused = labs[labs[index - 1].neighbours[j]]; desks += soused.desks; monitors += soused.monitors; } //printf("desks: %d monitors: %d\n", desks, monitors); printf("%s\n", desks > monitors ? "desks" : monitors > desks ? "monitors" : "same"); } } return 0; }