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.
import java.util.Scanner; public class CF { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int noOfContests = sc.nextInt(); int refScore = sc.nextInt(); int maxScore = refScore; int minScore = refScore; int noOfAmazingPerformance = 0; for(int contest=1;contest<noOfContests;contest++){ int score = sc.nextInt(); if(score > maxScore){ maxScore = score; noOfAmazingPerformance++; } if(score < minScore){ minScore = score; noOfAmazingPerformance++; } } System.out.println(noOfAmazingPerformance); } }
The algorithm iterates through the array of scores once, making it linear in time complexity.
The algorithm uses a constant amount of extra space, regardless of the input size.