Pabon_SEC

Lemmings Battle

May 23rd, 2016
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.46 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.     int test,i,j,battle,green,blue,a,mn;
  8.  
  9.     scanf("%d",&test);
  10.  
  11.     while(test--)
  12.     {
  13.         scanf("%d%d%d",&battle,&green,&blue);
  14.  
  15.         multiset<int>Gr,Bl;
  16.  
  17.         vector<int>SG,SB;
  18.  
  19.         for(i=1; i<=green; i++)
  20.         {
  21.             scanf("%d",&a);
  22.  
  23.             Gr.insert(a);
  24.         }
  25.  
  26.         for(i=1; i<=blue; i++)
  27.         {
  28.             scanf("%d",&a);
  29.  
  30.             Bl.insert(a);
  31.         }
  32.  
  33.         mn = min(Gr.size(),Bl.size());
  34.  
  35.         multiset<int>::iterator G_nd,B_nd;
  36.  
  37.         while(mn>0)
  38.         {
  39.             SG.clear();
  40.  
  41.             SB.clear();
  42.  
  43.             for(i=0; i<battle && mn>0; i++)
  44.             {
  45.                 G_nd = Gr.end();
  46.  
  47.                 G_nd--;
  48.  
  49.                 B_nd = Bl.end();
  50.  
  51.                 B_nd--;
  52.  
  53.                 if(*G_nd > *B_nd)
  54.                 {
  55.                     Gr.erase(G_nd);
  56.  
  57.                     Bl.erase(B_nd);
  58.  
  59.                     SG.push_back(*G_nd - *B_nd);
  60.                 }
  61.                 else if(*G_nd < *B_nd)
  62.                 {
  63.                     Gr.erase(G_nd);
  64.  
  65.                     Bl.erase(B_nd);
  66.  
  67.                     SB.push_back(*B_nd - *G_nd);
  68.                 }
  69.                 else
  70.                 {
  71.                     Gr.erase(G_nd);
  72.  
  73.                     Bl.erase(B_nd);
  74.                 }
  75.  
  76.                 mn = min(Gr.size(),Bl.size());
  77.             }
  78.  
  79.             for(j=0; j<SG.size(); j++)
  80.             {
  81.                 Gr.insert(SG[j]);
  82.             }
  83.  
  84.             for(j=0; j<SB.size(); j++)
  85.             {
  86.                 Bl.insert(SB[j]);
  87.             }
  88.  
  89.             mn = min(Gr.size(),Bl.size());
  90.         }
  91.  
  92.         if(!Gr.size() && !Bl.size())
  93.         {
  94.             printf("green and blue died\n");
  95.         }
  96.         else if(Gr.size()>0)
  97.         {
  98.             printf("green wins\n");
  99.  
  100.             G_nd = Gr.end();
  101.  
  102.             G_nd--;
  103.  
  104.             for( ; G_nd!=Gr.begin();G_nd--)
  105.             {
  106.                 printf("%d\n",*G_nd);
  107.             }
  108.  
  109.             printf("%d\n",*G_nd);
  110.         }
  111.         else
  112.         {
  113.             printf("blue wins\n");
  114.  
  115.             B_nd = Bl.end();
  116.  
  117.             B_nd--;
  118.  
  119.             for( ; B_nd!=Bl.begin();B_nd--)
  120.             {
  121.                 printf("%d\n",*B_nd);
  122.             }
  123.  
  124.             printf("%d\n",*B_nd);
  125.         }
  126.  
  127.         if(test>0)
  128.         {
  129.             puts("");
  130.         }
  131.     }
  132.  
  133.     return 0;
  134. }
Advertisement
Add Comment
Please, Sign In to add comment