Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <algorithm>
- #include <cstring>
- #include <string>
- #include <cctype>
- #include <stack>
- #include <queue>
- #include <list>
- #include <vector>
- #include <map>
- #include <set>
- #include <sstream>
- #include <stdlib.h>
- #include <cmath>
- #define LL unsigned long long
- using namespace std;
- int main() {
- int t,b,sg,sb,aux;
- multiset<int> green;multiset<int> blue;
- multiset<int>::iterator itg; multiset<int>:: iterator itb;
- vector < int > storeG , storeB ;
- scanf("%d",&t);
- while(t--){
- green.clear () ; blue.clear() ;
- scanf("%d %d %d",&b,&sg,&sb);
- for(int i=0;i<sg;i++){
- scanf("%d",&aux);green.insert(aux);
- }
- for(int i=0;i<sb;i++){
- scanf("%d",&aux);blue.insert(aux);
- }
- /*comienzo el proceso de simulacion*/
- while( green.size() > 0 && blue.size() > 0) {
- storeG.clear();storeB.clear();
- for(int i=0;i<b;i++){
- itg = green.end() ; itg-- ;
- itb = blue.end() ; itb-- ;
- if ( *itg > *itb)
- {
- green.erase(itg); blue.erase(itb);
- storeG.push_back ( *itg - *itb);
- }
- else if ( *itg < *itb)
- {
- green.erase(itg); blue.erase(itb);
- storeB.push_back ( *itb - *itg);
- }
- else{
- green.erase(itg); blue.erase(itb);
- }
- if (green.size()==0 || blue.size()==0)
- break ;
- }
- for ( int z = 0 ; z < storeB.size() ; z++)
- blue.insert( storeB [z] );
- for ( int z = 0 ; z < storeG.size() ; z++)
- green.insert ( storeG [z] );
- }
- if(green.size() == 0 && blue.size() == 0){
- printf("green and blue died\n");
- }else if(blue.size() > 0){
- printf("blue wins\n");
- itb = blue.end() ;
- do {
- itb --;
- printf("%d\n",*itb);
- }
- while ( itb != blue.begin());
- }else{
- printf("green wins\n");
- itg = green.end() ;
- do {
- itg --;
- printf("%d\n",*itg);
- }
- while ( itg != green.begin());
- }
- if(t>0) printf("\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement