Submission #744240

# Submission time Handle Problem Language Result Execution time Memory
744240 2023-05-18T09:55:52 Z b00norp Boat (APIO16_boat) C++14
0 / 100
2000 ms 340 KB
#include <bits/stdc++.h>
using namespace std;
#define int long long

mt19937_64 RNG(chrono::steady_clock::now().time_since_epoch().count());

const int INF = 1e18, N = 1e6 + 4, MOD = 1e9 + 7;
int seg[N * 4];

int add(int a, int b)
{
	a %= MOD;
	b %= MOD;
	int ans = (a + b) % MOD;
	return ans;
}

void Update(int l, int r, int pos, int qpos, int qval)
{
	if(l == r)
	{
		seg[pos] = add(seg[pos], qval);
		seg[pos] %= MOD;
		return;
	}
	int mid = (l + r) >> 1;
	if(qpos <= mid)
	{
		Update(l, mid, pos * 2, qpos, qval);
	}
	else
	{
		Update(mid + 1, r, pos * 2 + 1, qpos, qval);
	}
	seg[pos] = add(seg[pos * 2], seg[pos * 2 + 1]);
}

int Query(int l, int r, int pos, int ql, int qr)
{
	if(ql <= l && r <= qr)
	{
		return seg[pos];
	}
	if(ql > r || l > qr)
	{
		return 0;
	}
	int mid = (l + r) >> 1;
	return add(Query(l, mid, pos * 2, ql, qr), Query(mid + 1, r, pos * 2 + 1, ql, qr));
}

void Solve() 
{
	int n;
	cin >> n;
	vector<pair<int, int> > a(n);
	for(int i = 0; i < n; i++)
	{
		cin >> a[i].first >> a[i].second;
	}
	Update(0, N, 1, 0, 1);
	for(int i = 0; i < n; i++)
	{
		for(int j = a[i].second; j >= a[i].first; j--)
		{
			int val = Query(0, N, 1, 0, j - 1);
			Update(0, N, 1, j, val);
		}
	}
	// cout << Query(0, N, 1, 1, 1) << " -> ans for 1\n";
	// cout << Query(0, N, 1, 2, 2) << " -> ans for 2\n";
	// cout << Query(0, N, 1, 3, 3) << " -> ans for 3\n";
	cout << (Query(0, N, 1, 1, N)) % MOD << "\n";
}

int32_t main() 
{
	auto begin = std::chrono::high_resolution_clock::now();
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	int t = 1;
	// cin >> t;
	for(int i = 1; i <= t; i++) 
	{
		//cout << "Case #" << i << ": ";
		Solve();
	}
	auto end = std::chrono::high_resolution_clock::now();
    auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin);
    //cerr << "Time measured: " << elapsed.count() * 1e-9 << " seconds.\n"; 
	return 0;
}
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 340 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 340 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 2065 ms 340 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 340 KB Output isn't correct
2 Halted 0 ms 0 KB -