0
已解决
周琪岳
初级守护
初级守护
#include <iostream>
#include <algorithm>
using namespace std;
int a[15][15],f[15]/*记录每公里是谁跑的*/,bu[15]/*记录第i公里第i人已经连续跑了多少公里*/;
int out[10000],ans;
int main(){
for(int i=1;i<=5;i++){
for(int j=1;j<=10;j++){
cin>>a[i][j];
}
}
int juli=1;
while(true){
if(juli==26) break;
int minn=0x3f3f3f3f,pos=0;
for(int i=1;i<=5;i++){
if((juli==1 || f[juli-1]!=i) && a[i][1]<minn){//上一个公里不是i跑的
minn=a[i][1];
f[juli]=i;
bu[juli]=1;
pos=i;
}
if(juli!=1 && f[juli-1]!=i && a[i][bu[juli-1]+1]-a[i][bu[juli-1]]<minn && bu[juli-1]+1<=10){//上一个公里是i跑的
minn=a[f[juli-1]][bu[juli-1]+1];
f[juli]=i;
bu[juli]=bu[juli-1]+1;
pos=i;
}
}
out[pos]++;
ans+=a[pos][bu[juli]];
juli++;
}
cout<<ans<<endl;
for(int i=1;i<=5;i++) cout<<out[i]<<" ";
return 0;
}
WA0求助