fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. // 1 <= t <= 1000\
  4. //letters length from 1 to 32
  5. //integer -1000 and 1000,
  6.  
  7. int maxScore[1000]; int score[1000];
  8.  
  9. int main(void){
  10. string maxName[1000]; string name[1000]; int totalPeople = 0 ; int max=0; int maxCnt =0; int t; cin >> t;int maxEqIndex =0;
  11. while( t--){
  12. string a; int b; cin >> a >> b;
  13. for(int j=0; ; j++){
  14. if(name[j] == a){
  15. score[j] += b;
  16. if(max < score[j]){max = score[j];maxEqIndex= j; }
  17. if(maxScore[j] < score[j]) maxScore[j] = score[j];
  18. break;
  19. }
  20. else if(name[j].empty()){
  21. name[j] = a; score[j] =b; maxName[j] =a; maxScore[j] = b; totalPeople++;
  22. if(max < score[j]){max = score[j];maxEqIndex= j; }
  23. break;
  24. }
  25. }
  26. }
  27. int maxIndex[totalPeople]; int k=0;
  28. for(int i=0; i< totalPeople; i++){ if(score[i] == max) { maxCnt++; maxIndex[k]=i; k++; } }
  29.  
  30. if(maxCnt == 1)cout << name[maxIndex[0]] << endl;
  31. else{
  32. int maxCnt2 =0; int maxMax=maxScore[maxIndex[0]];
  33. for(int i=1; i<maxCnt ; i++){
  34. if(maxScore[maxIndex[i]-1] < maxScore[maxIndex[i]]) maxMax = maxScore[maxIndex[i]];
  35. }
  36. for(int i=0; i< maxCnt; i++){
  37. if(maxScore[maxIndex[i]] == maxMax ) maxCnt2++;
  38. }
  39. if(maxCnt2 ==1){
  40. int m= maxIndex[0];
  41. for(int i=1; i< k; i++){
  42. if(maxScore[maxIndex[i]-1] < maxScore[maxIndex[i]]) m = maxIndex[i];
  43. }
  44. cout << maxName[m];
  45. }
  46. else cout << name[maxEqIndex] << endl;
  47.  
  48. }
  49. return 0;
  50. }
Success #stdin #stdout 0.03s 25324KB
stdin
5
kaxqybeultn -352
mgochgrmeyieyskhuourfg -910
kaxqybeultn 691
mgochgrmeyieyskhuourfg -76
kaxqybeultn -303
stdout
#include<bits/stdc++.h>
using namespace std;
// 1 <= t <= 1000\
//letters length from 1 to 32
//integer -1000 and 1000,

int maxScore[1000]; int score[1000];

int main(void){ 
    string maxName[1000]; string name[1000]; int totalPeople = 0 ; int max=0; int maxCnt =0; int t; cin >> t;int maxEqIndex =0;
    while( t--){
        string a; int b; cin >> a >> b;
        for(int j=0;  ; j++){
            if(name[j] == a){
                score[j] += b;
				if(max < score[j]){max = score[j];maxEqIndex= j; }
                if(maxScore[j] < score[j]) maxScore[j] = score[j];
                break;
            }
            else if(name[j].empty()){
				name[j] = a; score[j] =b; maxName[j] =a; maxScore[j] = b; totalPeople++; 
				if(max < score[j]){max = score[j];maxEqIndex= j; } 
				break;
			}
        }
    }
	int maxIndex[totalPeople]; int k=0;
	for(int i=0; i< totalPeople; i++){ if(score[i] == max) { maxCnt++; maxIndex[k]=i; k++; }  }

    if(maxCnt == 1)cout << name[maxIndex[0]] << endl;
	else{ 
		int maxCnt2 =0; int maxMax=maxScore[maxIndex[0]];
		for(int i=1; i<maxCnt ; i++){
			if(maxScore[maxIndex[i]-1] < maxScore[maxIndex[i]]) maxMax = maxScore[maxIndex[i]];
		}
		for(int i=0; i< maxCnt; i++){
			if(maxScore[maxIndex[i]] == maxMax )  maxCnt2++;
		}
		if(maxCnt2 ==1){
			int m= maxIndex[0];
			for(int i=1; i< k; i++){
				if(maxScore[maxIndex[i]-1] < maxScore[maxIndex[i]]) m = maxIndex[i];
			}
			cout << maxName[m];
		}
		else cout << name[maxEqIndex] << endl;
		
	}
    return 0;
}