Submission #745003

#TimeUsernameProblemLanguageResultExecution timeMemory
745003amirhoseinfar1385Boat (APIO16_boat)C++17
31 / 100
495 ms524288 KiB
#include<bits/stdc++.h>
using namespace std;
int mod=1e9+7;

struct fen{
	long long fn[(1<<20)];
	void upd(int i,long long w){
		i++;
		while(i<(1<<20)){
			fn[i]+=w;
			fn[i]%=mod;
			i+=(-i)&i;
		}
	}
	long long pors(int i){
		i++;
		long long ret=0;
		while(i>0){
			ret+=fn[i];
			i-=(-i)&i;
		}
		ret%=mod;
		return ret;
	}
}fenw;

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int n;
	cin>>n;
	vector<pair<int,int>>all(n);
	vector<int>allind;
	for(int i=0;i<n;i++){
		cin>>all[i].first>>all[i].second;
		for(int j=all[i].first;j<=all[i].second;j++)
		{
			allind.push_back(j);
		}
	}
	allind.push_back(0);
	sort(allind.begin(),allind.end());
	allind.resize(unique(allind.begin(),allind.end())-allind.begin());
	fenw.upd(0,1);
	for(int i=0;i<n;i++){
		int lp=lower_bound(allind.begin(),allind.end(),all[i].first)-allind.begin();
		for(int j=all[i].second-all[i].first;j>=0;j--){
			fenw.upd(lp+j,fenw.pors(lp+j-1));
		}
	}
	long long res=fenw.pors((int)allind.size());
	res+=mod-1;
	res%=mod;
	cout<<res<<"\n";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...