C++: I love %username%

Thought Process

The problem requires counting amazing performances where a contestant's score breaks their previous records. We initialize minScore and maxScore with the first contest's score. For each subsequent score, we check if it either exceeds maxScore or falls below minScore. When either condition is met, we update the corresponding extreme value and increment our amazingCount.

#include <bits/stdc++.h>
using namespace std;

int main(){

    int noOfContests;
    int score,refScore;
    int noOfAmazingPerformance=0;
    
    cin >> noOfContests;
    cin >> refScore;
    int minScore = refScore;
    int maxScore = refScore;

    for(int contest=1;contest<noOfContests;contest++){

        cin >> score;
        if(score > maxScore){
            maxScore = score;
            noOfAmazingPerformance++;
        }
        if(score < minScore){
            minScore = score;
            noOfAmazingPerformance++;
        }
    }
    cout << noOfAmazingPerformance << endl;
    return 0;
}

Code Complexity

Time Complexity: O(n)

The algorithm iterates through the array of scores once, making it linear in time complexity.

Space Complexity: O(1)

The algorithm uses a constant amount of extra space, regardless of the input size.

Code copied!