Hack数据错了求调
查看原帖
Hack数据错了求调
701460
Magus楼主2022/10/2 11:01
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=1e7+10;
int n,m,k,arr1[maxn],arr2[maxn],arr3[maxn],arr4[maxn],l[maxn],s[maxn],t[maxn],f[maxn];
signed main()
{
   	cin>>n>>m>>k;
    for(int i=1;i<n;i++)
    {
    	cin>>arr1[i];
	}
    for(int i=0;i<m;i++)
    {
        cin>>arr2[i]>>arr3[i]>>arr4[i];
        s[arr4[i]]++;
        l[arr3[i]]=max(l[arr3[i]],arr2[i]);
    }
    for(int i=1;i<=n;i++)
	{
		t[i]=max(t[i-1],l[i-1])+arr1[i-1];
	}
    while(k--)
    {
        for(int i=n;i>=2;i--)
        {
            if(arr1[i-1]==0)
			{
				f[i-1]=0;
			}
            else
            {
                f[i-1]=s[i];
                if(t[i]>l[i])
				{
					f[i-1]+=f[i];
				}
            }
        }
        int sum=0;
        for(int i=0;i<=n;i++)
        {
        	if(f[i]>f[sum])
        	{
        		sum=i;
			}
		}
        arr1[sum]--;
        for(int i=sum;i<=n;i++)
		{
			t[i]=max(t[i-1],l[i-1])+arr1[i-1];
		}
    }
    int ans=0;
    for(int i=0;i<m;i++)
    {
    	ans+=t[arr4[i]]-arr2[i];
	}
    cout<<ans;
    return 0;
}
2022/10/2 11:01
加载中...