Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
1822 | 18级尹玉文东 | 【S】T3 分块 | C++ | 运行超时 | 30 | 2000 MS | 312 KB | 871 | 2020-11-16 10:32:13 |
#include <bits/stdc++.h> using namespace std; int B, n, m, ans, belong[5008]; void init() { ans = 0; for(int i = 1; i <= n; i++) { belong[i] = (i - 1) / B + 1; } } void query(int l,int r) { if(belong[l] == belong[r]) { for(int i = l; i <= r; i++) ++ans; return; } for(int i = belong[l] + 1; i < belong[r]; i++) ++ans; int R = belong[l] * B, L = (belong[r] - 1) * B + 1; for(int i = L; i <= r; i++) ++ans; for(int i = l; i <= R; i++) ++ans; } int ll[5008], rr[5008]; int main() { scanf("%d%d", &n, &m); for(int i = 1; i <= m; i++) { scanf("%d%d", &ll[i], &rr[i]); } for(B = 1; B <= n; B++) { init(); for(int i = 1; i <= m; i++) { query(ll[i], rr[i]); } cout << ans << " "; } return 0; }