1619D - New Year's Problem - CodeForces Solution


binary search greedy sortings *1800

Please click on ads to support us..

Python Code:

t=int(input())
while t:
    def fun(num,n,m,li):
        arr=[False]*m
        flag=0
        for i in range(n):
            c=0
            for j in range(m):
                if li[i][j]>=num:
                    arr[j]= True
                    c+=1
            if c>1:
                flag= 1
        if not flag and m>1:
            return False
        ans= True
        for i in arr:
            ans= ans and i
        return ans
    space= input()
    n,m= map(int,input().split())
    li=[]
    for i in range(n):
        a= list(map(int,input().split()))
        li.append(a)
    low= 1
    high=2
    while fun(high,n,m,li):
        high*=2
    while high-low>1:
        mid= (low+high)//2
        if fun(mid,n,m,li):
            low= mid
        else:
            high= mid
    print(low)
    t-=1

C++ Code:

/******************************************************************************

                              Online C++ Compiler.
               Code, Compile, Run and Debug C++ program online.
Write your code in this editor and press "Run" button to compile and execute it.

*******************************************************************************/
#include <bits/stdc++.h>
using namespace std;
#define ll long long int

void solve(){
    int m,n;
    cin >> m >> n;
    vector<vector<ll> > p(m,vector<ll> (n));
    for(ll i =0;i<m;i++)
    {
        for(ll j=0;j<n;j++)
        {
            ll x;
            cin >> x;
            p[i][j] = x;
        }
    }
    ll alpha = 1e9;

     for(ll i =0;i<n;i++)
    {
        ll col_max = 0;
        for(ll j=0;j<m;j++)
        {
        col_max = max(col_max,p[j][i]);
        }
        alpha = min(alpha,col_max);
    }

    ll alp = 0;
    for(ll i =0;i<m;i++)
    {
        ll first = 0;
        ll second = 0;
        for(ll j=0;j<n;j++)
        {
            if(p[i][j]>first)
            {
                second = first;
                first= p[i][j];
            }
            else if(p[i][j]>second){
                second = p[i][j];
            }
        }
        alp = max(alp,second);
    }
    alpha = min(alp,alpha);
    cout << alpha << endl;


}
int main(void){
    int t=1;
    cin>>t;
    while(t--){
        solve();
    }
}


Comments

Submit
0 Comments
More Questions

443A - Anton and Letters
1478B - Nezzar and Lucky Number
228A - Is your horseshoe on the other hoof
122A - Lucky Division
1611C - Polycarp Recovers the Permutation
432A - Choosing Teams
758A - Holiday Of Equality
1650C - Weight of the System of Nested Segments
1097A - Gennady and a Card Game
248A - Cupboards
1641A - Great Sequence
1537A - Arithmetic Array
1370A - Maximum GCD
149A - Business trip
34A - Reconnaissance 2
59A - Word
462B - Appleman and Card Game
1560C - Infinity Table
1605C - Dominant Character
1399A - Remove Smallest
208A - Dubstep
1581A - CQXYM Count Permutations
337A - Puzzles
495A - Digital Counter
796A - Buying A House
67A - Partial Teacher
116A - Tram
1472B - Fair Division
1281C - Cut and Paste
141A - Amusing Joke