1 条题解
-
1
#include<bits/stdc++.h> using namespace std; #define int long long #define rmk memset #define Fastin cin.tie(0)->sync_with_stdio(0) const int N=3e5+5; int n,dpl[N],dpr[N]; struct node{ int c,x,id1,id2; //friend bool operator<(node a,node b){ // return a.x<b.x; //} }seats[N]; bool cmp(node a,node b){return a.x<b.x;} bool cmpx(node a,node b){return a.id1<b.id1;} signed main(){ Fastin; cin>>n; for(int i=1;i<=n;i++){ cin>>seats[i].c>>seats[i].x; seats[i].id1=i; } sort(seats+1,seats+n+1,cmp); for(int i=1;i<=n;i++)seats[i].id2=i; rmk(dpl,0x3f,sizeof dpl); for(int i=2;i<=n;i++){ if(seats[i].c!=seats[i-1].c) dpl[i]=min(dpl[i],seats[i].x-seats[i-1].x); else dpl[i]=min(dpl[i],dpl[i-1]+seats[i].x-seats[i-1].x); } rmk(dpr,0x3f,sizeof dpr); for(int i=n-1;i>=1;i--){ if(seats[i].c!=seats[i+1].c) dpr[i]=min(dpr[i],seats[i+1].x-seats[i].x); else dpr[i]=min(dpr[i],dpr[i+1]+seats[i+1].x-seats[i].x); } sort(seats+1,seats+n+1,cmpx); for(int i=1;i<=n;i++){ int j=seats[i].id2; cout<<min(dpl[j],dpr[j])<<'\n'; } return 0; }
- 1
信息
- ID
- 13949
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- 递交数
- 108
- 已通过
- 17
- 上传者