Submission #1052917

#TimeUsernameProblemLanguageResultExecution timeMemory
1052917vjudge1Trains (BOI24_trains)C++17
0 / 100
147 ms3164 KiB
/*
بسم الله الرحمن الرحيم
Author:
                          (:Muhammad Aneeq:)
*/

#include <iostream>
#include <map>
using namespace std;
int const mod=1e9+7;
inline void solve()
{
	int n;
	cin>>n;
	int d[n],x[n];
	for (int i=0;i<n;i++)
		cin>>d[i]>>x[i];
	int ans[n]={};
	map<int,int>val[n]={};
	ans[0]=1;
	for (int i=0;i<n;i++)
	{
		for (auto& j:val[i])
		{
			ans[i]+=j.second;
			ans[i]%=mod;
		}
		if (d[i]&&x[i]&&i+d[i]<n)
		{
			val[i+d[i]][d[i]]+=ans[i];
			if (i+d[i]*x[i]+d[i]<n)
			{
				val[i+d[i]*x[i]+d[i]][d[i]]+=(mod-ans[i]);
				val[i+d[i]*x[i]+d[i]][d[i]]%=mod;
			}
		}
		for (auto& j:val[i])
		{
			if (i+j.first<n&&j.second!=0)
			{
				val[i+j.first][j.first]+=j.second;
				val[i+j.first][j.first]%=mod;
			}
		}
		val[i]={};
	}
	int z=0;
	for (auto i:ans)
		z=(z+i)%mod;
	cout<<z<<endl;
}	
signed main()
{
    ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
        solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...