Varsity Player

 

#include <bits/stdc++.h>
#define M 1000

using namespace std;

int n,m,vt[M+5],cnt,ans=1e9*2;
struct T{
    int v,idx;
};
T A[M*M+5];

bool sf(T a,T b){
    return a.v<b.v;
}

void input(){
    cin>>n>>m;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cin>>A[m*i+j].v;
            A[m*i+j].idx=i;
        }
    }
    sort(A,A+n*m,sf);
}

void pro(){
    int l=0,r=0;
    while(r<n*m){
        vt[A[r].idx]++;
        if(vt[A[r].idx]==1) cnt++;
        while(vt[A[l].idx]>1){
            vt[A[l].idx]--;
            l++;
        }
        if(cnt==n) ans=min(ans,A[r].v-A[l].v);
        r++;
    }
}

int main(){
    cin.tie(0);
    ios::sync_with_stdio(0);
    //freopen("in.txt","r",stdin);
    input();
    pro();
    cout<<ans<<endl;
    return 0;
}

Comments