(GREEDY) N meetings in one room

Also, maximum no. of movies you can watch. One movie at a time.
 avatar
unknown
java
8 days ago
2.1 kB
3
Indexable
//{ Driver Code Starts
import java.io.*;
import java.lang.*;
import java.util.*;

class GFG {
    public static void main(String args[]) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int t = Integer.parseInt(br.readLine().trim());

        while (t-- > 0) {
            String line1 = br.readLine();
            String[] a1 = line1.trim().split("\\s+");
            int n = a1.length;
            int a[] = new int[n];
            for (int i = 0; i < n; i++) {
                a[i] = Integer.parseInt(a1[i]);
            }

            String line2 = br.readLine();
            String[] a2 = line2.trim().split("\\s+");
            n = a2.length;
            int b[] = new int[n];
            for (int i = 0; i < n; i++) {
                b[i] = Integer.parseInt(a2[i]);
            }

            int ans = new Solution().maxMeetings(a, b);
            System.out.println(ans);
            System.out.println("~");
        }
    }
}

// } Driver Code Ends

class Pair {
    int start;
    int end;
    Pair(int start, int end) {
        this.start = start;
        this.end = end;
    }
}

class Solution {
    // Function to find the maximum number of meetings that can
    // be performed in a meeting room.
    public int maxMeetings(int start[], int end[]) {
        Pair[] pairs = new Pair[start.length];
        for (int i = 0; i < start.length; i++) {
            pairs[i] = new Pair(start[i], end[i]);
        }

        // Step 2: Sort pairs based on the end values
        Arrays.sort(pairs, Comparator.comparingInt(p -> p.end));
        
        for (int i = 0; i < start.length; i++) {
            start[i] = pairs[i].start;
            end[i] = pairs[i].end;
        }
        
        int prev_end = end[0], ans = 1;
        for(int i=1;i<start.length;++i)
        {
            if(start[i] > prev_end)
            {
                ans++;
                prev_end = end[i];
            }
        }
        
        return ans;
    }
}
Leave a Comment