Advertisement
juanjo12x

UVA_978_Lemmings_Battle

Aug 11th, 2014
313
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.35 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <algorithm>
  4. #include <cstring>
  5. #include <string>
  6. #include <cctype>
  7. #include <stack>
  8. #include <queue>
  9. #include <list>
  10. #include <vector>
  11. #include <map>
  12. #include <set>
  13. #include <sstream>
  14. #include <stdlib.h>
  15. #include <cmath>
  16. #define LL unsigned long long
  17. using namespace std;
  18.  
  19. int main() {
  20.     int t,b,sg,sb,aux;
  21.     multiset<int> green;multiset<int> blue;
  22.     multiset<int>::iterator itg; multiset<int>:: iterator itb;
  23.     vector < int > storeG , storeB ;
  24.     scanf("%d",&t);
  25.     while(t--){
  26.          green.clear ()  ; blue.clear() ;
  27.         scanf("%d %d %d",&b,&sg,&sb);
  28.         for(int i=0;i<sg;i++){
  29.            scanf("%d",&aux);green.insert(aux);
  30.         }
  31.         for(int i=0;i<sb;i++){
  32.             scanf("%d",&aux);blue.insert(aux);
  33.         }
  34.         /*comienzo el proceso de simulacion*/
  35.    
  36.         while( green.size() > 0 && blue.size() > 0) {
  37.             storeG.clear();storeB.clear();
  38.             for(int i=0;i<b;i++){
  39.                 itg = green.end() ; itg-- ;
  40.                 itb = blue.end() ; itb-- ;
  41.                     if ( *itg > *itb)
  42.                     {
  43.                           green.erase(itg); blue.erase(itb);
  44.                           storeG.push_back ( *itg - *itb);
  45.                     }
  46.                     else if ( *itg < *itb)
  47.                     {
  48.                           green.erase(itg); blue.erase(itb);
  49.                           storeB.push_back ( *itb - *itg);
  50.                     }
  51.                     else{  
  52.                             green.erase(itg); blue.erase(itb);
  53.                    }
  54.  
  55.                
  56.                     if (green.size()==0 || blue.size()==0)
  57.                     break ;
  58.             }
  59.             for ( int z = 0 ; z < storeB.size() ; z++)
  60.                         blue.insert( storeB [z] );
  61.             for ( int z = 0 ; z < storeG.size() ; z++)
  62.                        green.insert ( storeG [z] );
  63.         }
  64.         if(green.size() == 0 && blue.size() == 0){
  65.             printf("green and blue died\n");
  66.         }else if(blue.size() > 0){
  67.             printf("blue wins\n");
  68.             itb = blue.end() ;
  69.             do {
  70.               itb --;
  71.               printf("%d\n",*itb);
  72.             }
  73.             while ( itb != blue.begin());
  74.         }else{
  75.             printf("green wins\n");
  76.             itg = green.end() ;
  77.             do {
  78.               itg --;
  79.               printf("%d\n",*itg);
  80.             }
  81.           while ( itg != green.begin());
  82.  
  83.         }
  84.         if(t>0) printf("\n");
  85.     }
  86.     return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement