传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1293
排完序扫一遍,没了
最近刷水太多了唉……
Code:
#include<bits/stdc++.h>
#define fst first
#define sec second
using namespace std;
const int maxn=1e6+5;
typedef pair<int,int> par;
int n,k,tot,ans=INT_MAX;
int T[61],cnt[61],col;
par a[maxn];
int main(){
scanf("%d%d",&n,&k);
for(int i=1;i<=k;i++){
scanf("%d",&T[i]);
for(int j=1;j<=T[i];j++){
tot++;
scanf("%d",&a[tot].fst);
a[tot].sec=i;
}
}sort(a+1,a+1+n);
for(int i=1,j=1;i<=n&&j<=n;){
while(i<=n&&col!=k)col+=!cnt[a[i++].sec]++;
while(j<=n&&col==k){
ans=min(ans,a[i-1].fst-a[j].fst);
col-=!--cnt[a[j++].sec];
}
}cout<<ans<<endl;
return 0;
}