Advertisement
juanjo12x

UVA_11385_Formula_1

Aug 15th, 2014
295
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.11 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 FOR(i,A) for(typeof (A).begin() i = (A).begin() ; i != (A).end() ; i++)
  17. #define debug( x ) cout << #x << " = " << x << endl
  18. #define clr(v,x) memset( v, x , sizeof v )
  19. #define all(x) (x).begin() , (x).end()
  20. #define rall(x) (x).rbegin() , (x).rend()
  21. #define TAM 110
  22.  
  23. using namespace std;
  24.  
  25. typedef pair<int,int> ii ;
  26. typedef long long ll ;
  27. typedef long double ld ;
  28. typedef pair<int,ii> pii ;
  29.  
  30. int arr[101][101];
  31. int aux,aux1;
  32.  
  33. bool cmp(const ii &a ,const ii &b){
  34.     return ((a.second)<(b.second));
  35. }
  36. int main() {
  37.     int G,P;
  38.     while(scanf("%d %d",&G,&P)){
  39.         if(G==0 && P==0) break;
  40.         for(int i=0;i<G;i++){
  41.             for(int j=0;j<P;j++){
  42.                 scanf("%d",&arr[i][j]);
  43.             }
  44.         }
  45.         int s;scanf("%d",&s);
  46.         for(int i=0;i<s;i++){
  47.             scanf("%d",&aux);map<int,int> mp;
  48.             for(int j=1;j<=aux;j++){
  49.                 scanf("%d",&aux1);
  50.                 mp[j]=aux1;
  51.             }
  52.             map<int,int> mp1;/*columna del jugador con puntos*/
  53.             for(int j=1;j<=P;j++) mp1[j+1]=0;
  54.             for(int k=0;k<G;k++){
  55.                 for(int j=0;j<P;j++){
  56.                     if(mp.count(arr[k][j])==0){/*no existe puntaje para puesto*/
  57.                         continue;
  58.                     }else{
  59.                         mp1[j+1]+=mp[arr[k][j]];
  60.                     }
  61.                 }
  62.             }
  63.             /*proceso de impresion*/
  64.            
  65.             vector<ii> v;ii par;
  66.             map<int,int> ::iterator it;int maxi=0;
  67.             for(it=mp1.begin();it!=mp1.end();it++){
  68.                 par.first=it->first;par.second=it->second;
  69.                v.push_back(par);
  70.             }
  71.             sort(v.begin(),v.end(),cmp);vector <int> auxi;
  72.             maxi=v[v.size()-1].second;auxi.push_back(v[v.size()-1].first);
  73.             for(int j=v.size()-2;j>=0;j--){
  74.                 if(v[j].second==maxi) auxi.push_back(v[j].first);
  75.                 else break;
  76.             }
  77.             sort(auxi.begin(),auxi.end());
  78.             if(auxi.size()==1) printf("%d\n",auxi[0]);
  79.             else{
  80.                 for(int j=0;j<auxi.size();j++){
  81.                     if(j!=auxi.size()-1) printf("%d ",auxi[j]);
  82.                     else printf("%d\n",auxi[j]);
  83.                 }
  84.             }
  85.            
  86.         }
  87.        
  88.     }
  89.     return 0;
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement