Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
1831 | 16级赵子潇 | 【S】T3 分块 | C++ | 运行超时 | 30 | 2000 MS | 25720 KB | 1130 | 2020-11-16 11:16:33 |
#include <bits/stdc++.h> using namespace std; #define int long long char buf[1 << 21], *p1 = buf, *p2 = buf; inline char getc(){ return p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 21, stdin), p1 == p2) ? EOF : *p1++; } inline void read(int &x){ x = 0; char s = getc(); while(s < '0' || s > '9') s = getc(); while('0' <= s && s <= '9'){ x = (x << 3) + (x << 1) + (s ^ 48); s = getc(); } } void print(const int &x){ if(x > 9) print(x / 10); putchar(x % 10 + '0'); } const int N = 1000010; int n, m, ans, B, l[N], r[N], belong[N]; inline void query(int l, int r){ if(belong[l] == belong[r]){ ans += r - l + 1; return; } if(belong[l] + 1 <= belong[r] - 1) ans += belong[r] - belong[l] - 1; int R = belong[l] * B, L = (belong[r] - 1) * B + 1; ans += r - L + 1; ans += R - l + 1; } signed main() { read(n); read(m); for(int i = 1;i <= m;i++) read(l[i]), read(r[i]); for(int i = 1;i <= n;i++){ B = i; ans = 0; for(int i = 1;i <= n;i++) belong[i] = (i - 1) / B + 1; for(int i = 1;i <= m;i++) query(l[i], r[i]); print(ans); putchar('\n'); } return 0; }