开始手一抖,把最大值赋小了(我赋成了1e9,但是int的最大值为2147483648),所以各种WA。。。然后改了就A了。思路很简单,然后我用排序乱搞。。。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define inf (2147483646)
int N,K;
int C[100];
struct node{
int pos,col;
}e[2000000+10];
void input(){
scanf("%d%d",&N,&K);
int tot=0; int x;
for(int i=1;i<=K;i++){
scanf("%d",&x);
while(x--)scanf("%d",&e[++tot].pos), e[tot].col=i;
}
}
bool cmp(node a,node b){return a.pos<b.pos;}
void solve(){
long long ans=inf;
sort(e+1,e+N+1,cmp);
for(int i=1;i<=N;i++){
C[e[i].col]=e[i].pos;
int mi=inf;
for(int j=1;j<=K;j++)mi=min(mi,C[j]);
if(!mi)continue;
if(e[i].pos-mi<ans)ans=e[i].pos-mi;
}
printf("%d",ans);
}
int main(){
input(); solve();
return 0;
}