Submission #994668

# Submission time Handle Problem Language Result Execution time Memory
994668 2024-06-08T03:26:57 Z hmm789 Trains (BOI24_trains) C++14
8 / 100
297 ms 130388 KB
#include <bits/stdc++.h>
using namespace std;
#define int long long 
#define MOD 1000000007

const int B = 320;
int sm[B][B][B];

int32_t main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	int n;
	cin >> n;
	int d[n], x[n], dp[n];
	for(int i = 0; i < n; i++) cin >> d[i] >> x[i];
	for(int i = n-1; i >= 0; i--) {
		dp[i] = 1;
		if(d[i] == 0) {
		} else if(d[i] < B) {
			int mn = min(i+d[i]*x[i], n-1);
			while(mn % d[i] != i%d[i]) mn--;
			int lblk = i/B, rblk = mn/B;
			if(rblk-lblk < 2) {
				for(int j = 1; j <= x[i]; j++) {
					if(i+j*d[i] >= n) break;
					dp[i] += dp[i+j*d[i]];
					dp[i] %= MOD;
				}
			} else {
				for(int j = lblk+1; j < rblk; j++) {
					dp[i] += sm[d[i]][i%d[i]][j];
					dp[i] %= MOD;
				}
				int st = (lblk+1)*B-1, ed = rblk*B;
				st = st-st%d[i]+i%d[i];
				if(st >= (lblk+1)*B) st -= d[i];
				for(; st >= i; st -= d[i]) {
					dp[i] += dp[st];
					dp[i] %= MOD;
				}
				ed = ed-ed%d[i]+i%d[i];
				if(ed < rblk*B) ed += d[i];
				for(; ed <= mn; ed += d[i]) {
					dp[i] += dp[ed];
					dp[i] %= MOD;
				}
			}
		} else {
			for(int j = 1; j <= x[i]; j++) {
				if(i+j*d[i] >= n) break;
				dp[i] += dp[i+j*d[i]];
				dp[i] %= MOD;
			}
		}
		for(int j = 1; j < B; j++) {
			sm[j][i%j][i/B] += dp[i];
			sm[j][i%j][i/B] %= MOD;
		}
	}
	cout << dp[0];
}
# Verdict Execution time Memory Grader output
1 Correct 3 ms 4696 KB Output is correct
2 Correct 4 ms 7260 KB Output is correct
3 Correct 6 ms 10844 KB Output is correct
4 Correct 3 ms 5980 KB Output is correct
5 Correct 6 ms 13400 KB Output is correct
6 Correct 6 ms 13404 KB Output is correct
7 Correct 2 ms 2140 KB Output is correct
8 Correct 2 ms 2140 KB Output is correct
9 Correct 2 ms 2140 KB Output is correct
10 Correct 2 ms 2016 KB Output is correct
11 Correct 6 ms 13324 KB Output is correct
12 Correct 8 ms 13404 KB Output is correct
13 Correct 6 ms 13404 KB Output is correct
14 Correct 6 ms 13400 KB Output is correct
15 Correct 6 ms 13404 KB Output is correct
16 Correct 6 ms 13400 KB Output is correct
17 Correct 6 ms 13404 KB Output is correct
18 Correct 6 ms 13404 KB Output is correct
19 Correct 6 ms 13400 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 4696 KB Output is correct
2 Correct 4 ms 7260 KB Output is correct
3 Correct 6 ms 10844 KB Output is correct
4 Correct 3 ms 5980 KB Output is correct
5 Correct 6 ms 13400 KB Output is correct
6 Correct 6 ms 13404 KB Output is correct
7 Correct 2 ms 2140 KB Output is correct
8 Correct 2 ms 2140 KB Output is correct
9 Correct 2 ms 2140 KB Output is correct
10 Correct 2 ms 2016 KB Output is correct
11 Correct 6 ms 13324 KB Output is correct
12 Correct 8 ms 13404 KB Output is correct
13 Correct 6 ms 13404 KB Output is correct
14 Correct 6 ms 13400 KB Output is correct
15 Correct 6 ms 13404 KB Output is correct
16 Correct 6 ms 13400 KB Output is correct
17 Correct 6 ms 13404 KB Output is correct
18 Correct 6 ms 13404 KB Output is correct
19 Correct 6 ms 13400 KB Output is correct
20 Incorrect 85 ms 129084 KB Output isn't correct
21 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 8 ms 13404 KB Output is correct
2 Incorrect 88 ms 129024 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 297 ms 130388 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 3 ms 4696 KB Output is correct
2 Correct 4 ms 7260 KB Output is correct
3 Correct 6 ms 10844 KB Output is correct
4 Correct 3 ms 5980 KB Output is correct
5 Correct 6 ms 13400 KB Output is correct
6 Correct 6 ms 13404 KB Output is correct
7 Correct 2 ms 2140 KB Output is correct
8 Correct 2 ms 2140 KB Output is correct
9 Correct 2 ms 2140 KB Output is correct
10 Correct 2 ms 2016 KB Output is correct
11 Correct 6 ms 13324 KB Output is correct
12 Correct 8 ms 13404 KB Output is correct
13 Correct 6 ms 13404 KB Output is correct
14 Correct 6 ms 13400 KB Output is correct
15 Correct 6 ms 13404 KB Output is correct
16 Correct 6 ms 13400 KB Output is correct
17 Correct 6 ms 13404 KB Output is correct
18 Correct 6 ms 13404 KB Output is correct
19 Correct 6 ms 13400 KB Output is correct
20 Incorrect 85 ms 129084 KB Output isn't correct
21 Halted 0 ms 0 KB -