Advertisement
juanjo12x

UVA_119_Greedy_Gift_Givers

Jul 11th, 2014
19
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.82 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <string>
  4. #include <cstring>
  5. #include <map>
  6. #include <vector>
  7. #include <sstream>
  8. using namespace std;
  9.  
  10.  
  11. int main(int argc, char** argv) {
  12.     int n,t=0;
  13.     while(cin>>n){
  14.         /*mientras sea distinto de n , avanzo*/
  15.         if(t!=0) cout<<endl;
  16.         else t++;
  17.         /*declaro mi mapa*/
  18.         map<string,int> people;
  19.         /*declaro un vector auxiliar*/
  20.         vector<string> v;
  21.         string s;
  22.         for(int i=0;i<n;i++){
  23.             /*cargo el valor de la persona en el string*/
  24.             cin>>s;
  25.             /*la asocio a mi mapa y inicializo su monto en 0*/
  26.             people[s]=0;
  27.             /*la asocio al vector declarado*/
  28.              v.push_back(s);
  29.         }
  30.         cin.ignore();/*paso a la siguiente linea*/
  31.         for (int i=0;i<n;i++){
  32.             /*leo toda la linea*/
  33.             getline(cin,s);
  34.             /*usare mi variable is como lectura*/
  35.             istringstream is(s);
  36.             string cad;
  37.             is>>cad;
  38.             int amount,npeople;
  39.             is>>amount;
  40.             is>>npeople;
  41.             if (amount>0 && npeople>0){
  42.                 /*calculo el monto que se gastara*/
  43.                 int payment=amount/npeople;
  44.                 /*calculo nuevo monto*/
  45.                 amount=payment*npeople;
  46.                 /*resto al monto que ya tenia en mi mapa*/
  47.                 people[cad]-=amount;
  48.                 while(npeople--){
  49.                     /*para cada persona leida , procedo con su respectivo
  50.                      pago para su regalo*/
  51.                    is>>cad;
  52.                    people[cad]+=payment;
  53.                 }
  54.             }
  55.         }
  56.         for(int i=0;i<people.size();i++){
  57.              printf("%s %d\n",v[i].c_str(),people[v[i]]);
  58.         }
  59.        
  60.     }
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement