求大神帮查错ORZ

#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 条评论

  • 1

信息

ID
1741
难度
5
分类
贪心 | 数据结构 点击显示
标签
递交数
1477
已通过
470
通过率
32%
被复制
10
上传者