奇怪的分数又增加了(???
查看原帖
奇怪的分数又增加了(???
526765
m249_chen楼主2022/4/13 22:23

RT,求各位大佬指点一二

#include<bits/stdc++.h>
using namespace std;
const long long N=10e6+5;
long long n=0,m=0;
long long a[N],h[N],d[N],s[N],t[N],day[N];
bool chk(int mid){
    memset(day,0,sizeof day);
    for(int i=1;i<=mid;i++){
        day[s[i]]+=d[i];
        day[t[i]+1]-=d[i];
    }
    if(day[1]>h[1]){
        return 0;
    }
    for(int i=2;i<=n;i++){
        day[i]+=day[i-1];
        if (day[i]>h[i]){
            return 0;
        }
    }
    return 1;
}

int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>h[i];
	}
	for(int i=1;i<=m;i++){
		cin>>d[i]>>s[i]>>t[i];
	}
	int l=1,h=m;
	while(l<h){
		int mid=(l+h)/2;
		if(chk(mid)==1){
			l=mid+1;
		}else{
			h=mid-1;
		}
	}
	if(m!=h){
		cout<<"-1"<<endl<<h+1<<endl;
	}else{
		cout<<"0"<<endl;
	}
	return 0;
}

2022/4/13 22:23
加载中...