Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
27834 | 申东铉 | 【S】T3 分块 | C++ | 运行超时 | 30 | 2000 MS | 11960 KB | 820 | 2024-03-31 10:01:35 |
#include <bits/stdc++.h> using namespace std; int n,m,B,belong[1000006],ans,l[1000006],r[1000006]; inline void init (int n,int I) { B = I; 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]) { ans += r - l + 1; return; } if (belong[r] > belong[l] + 1) { ans += belong[r] - belong[l] - 1; } int R = belong[l] * B,L = (belong[r] - 1) * B + 1; if (r >= L) { ans += r - L + 1; } if (R >= l) { ans += R - l + 1; } } int main () { scanf("%d%d",&n,&m); for(int i = 1;i <= m;i++) { scanf("%d%d",&l[i],&r[i]); } for (int I = 1;I <= n;I++) { init(n,I); for(int i = 1;i <= m;i++) { query(l[i],r[i]); } printf("%d\n",ans); } }