时间复杂度和题解一样是kn^2(至少我觉得),不知道哪里慢了
#include<iostream>
using namespace std;
int n,m,k,d[1005],last[1005];
struct people{
int t,a,b;
}p[10005];
int js()
{
int time=0,get[1005],leave[1005];
get[1]=0;leave[1]=last[1];
for(int i=2;i<=n;i++)
{
get[i]=leave[i-1]+d[i-1];
leave[i]=max(get[i],last[i]);
}
for(int i=1;i<=m;i++)
{
time+=get[p[i].b]-p[i].t;
}
return time;
}// ok
int main()
{
cin>>n>>m>>k;
for(int i=1;i<n;i++)
cin>>d[i];
for(int i=1;i<=m;i++)
{
cin>>p[i].t>>p[i].a>>p[i].b;
last[p[i].a]=max(last[p[i].a],p[i].t);
}
int maxn,mintime;
for(int i=1;i<=k;i++)
{
maxn=1,mintime=1000000000;
for(int j=1;j<n;j++)
{
if(d[j]==0) continue;
d[j]-=1;
int b=js();
d[j]+=1;
if(b<mintime) maxn=j,mintime=b;
}
d[maxn]--;
}
cout<<mintime;
return 0;
}