- 观光公交
- 2015-01-28 19:38:17 @
#include<iostream>
#include<algorithm>
using namespace std;
struct youke
{
int T;
int A;
int B;
};
youke you[10000];
struct jingdian
{
int D;
int T;
int t;
int ren;
};
jingdian jing[1000];
int n,m,k,T=0;
int main()
{
cin>>n>>m>>k;
for(int i=0;i<n-1;i++)
{
cin>>jing[i].D;
jing[i].T=0;
jing[i].ren=0;
}
jing[n-1].T=0;
jing[n-1].ren=0;
for(int i=0;i<m;i++)
{
cin>>you[i].T>>you[i].A>>you[i].B;
if(you[i].T>jing[you[i].A-1].T) jing[you[i].A-1].T=you[i].T;
for(int j=you[i].A;j<=you[i].B-1;j++) jing[j].ren+=1;
}
jing[0].t=jing[0].T;
for(int i=1;i<n;i++)
{
jing[i].t=jing[i].T;
if(jing[i].t<jing[i-1].t+jing[i-1].D) jing[i].t=jing[i-1].t+jing[i-1].D;
}
for(int i=0;i<k;i++)
{
int max=0;
for(int j=1;j<n;j++)
{
if(jing[j-1].D>0&&jing[j].ren>=jing[max].ren)
{
int flag=0;
for(int l=j-1;l<n-1;l++)
{
if(jing[l].t+jing[l].D<=jing[l+1].T)
{
flag=1;
break;
}
}
if(flag==0) max=j-1;
}
}
jing[max].D-=1;
if(max==0) break;
for(int l=max+1;l<n;l++)
jing[l].t-=1;
}
for(int i=0;i<m;i++) T+=jing[you[i].B-2].t+jing[you[i].B-2].D-you[i].T;
cout<<T<<endl;
return 0;
}
写的比较渣,不要在意TAT但是找不出错误,囧RZ!求帮查错!!!
3 条评论
-
wuwangmao LV 8 @ 2016-10-12 22:23:31
还是再打一遍吧。-_-
-
2015-05-29 22:00:19@
QAQ
-
2015-01-29 19:53:17@
已经找到好多错误,不会修改。囧,QAQ
- 1