rt,从 P3029 过来的,把代码改了一下,为什么样例都过不了捏
P3029 AC 代码
#include<iostream>
#include<map>
#include<algorithm>
using namespace std;
struct node{
int x,d;//坐标 种类
}cow[50050],q[50050];
int n,idx[50050];
map<int,int>mp;
bool cmp(node a,node b){
return a.x<b.x;
}
int main(){
cin>>n;
int sum=0;
for(int i=1;i<=n;++i){
cin>>cow[i].x>>cow[i].d;
mp[cow[i].d]++;
if(mp[cow[i].d]==1) ++sum;
}
sort(cow+1,cow+n+1,cmp);
int l=1,r=0;
int ans=999999999;
int cnt=0;
mp.clear();
for(int i=1;i<=n;++i){
++mp[cow[i].d];
if(mp[cow[i].d]==1) ++cnt;
q[++r]=(node){cow[i].x,cow[i].d};
if(mp[cow[l].d]>1){
mp[cow[l].d]--;
++l;
}
if(cnt==sum) ans=min(ans,q[r].x-q[l].x);
}
cout<<ans<<endl;
}
P2564只修改了 main
int main(){
int m;
cin>>m>>n;
int sum=0,idx=0;
for(int i=1;i<=n;++i){
int x; cin>>x;
for(int j=1;j<=x;++j){
int y; cin>>y;
cow[++idx].d=i; cow[idx].x=y;
mp[cow[idx].d]++;
// if(mp[cow[i].d]==1) ++sum;
}
}
sort(cow+1,cow+m+1,cmp);
int l=1,r=0;
int ans=999999999;
int cnt=0;
mp.clear();
for(int i=1;i<=m;++i){
++mp[cow[i].d];
if(mp[cow[i].d]==1) ++cnt;
q[++r]=(node){cow[i].x,cow[i].d};
if(mp[cow[l].d]>1){
mp[cow[l].d]--;
++l;
}
if(cnt==n) ans=min(ans,q[r].x-q[l].x);
}
cout<<ans<<endl;
}
不管数组越界RE的问题,为什么上面的代码样例都不对呢