2 条题解
-
0
RUST MLE 经典考题。论 IO 的实现
这里用ffi的io或者其他办法的io是有办法规避io引起的MLE的,但是思路一样,无所谓啦
fn solve(input: &mut FastReader<impl BufRead>, output: &mut BufWriter<impl Write>) -> Result<()> { _ = input.nextln(); let mut arr = input.readln::<i64>(); while input.has_next() { let tmp = input.readln::<usize>(); if tmp[0] == 1 { let [_, l, r, k] = &tmp[..] else { todo!() }; arr[*l - 1..*r].rotate_right(k % (r - l + 1)); } else { let [_, i] = &tmp[..] else { todo!() }; writeln!(output, "{}", arr[i - 1])?; } } Ok(()) }
-
0
#include<iostream> #include<vector> using namespace std; typedef long long ll; const int N = 1e7 + 10; int n, q; vector<ll>a(N); void roll(vector<ll>& a, int l, int r) { for (int i = l, j = r; i <j; i++, j--) { swap(a[i],a[j]); } } int main() { scanf("%d%d",&n,&q); for (int i = 0; i < n; i++) { scanf("%lld",&a[i]); } while (q--) { int op; scanf("%d",&op); if (op == 1) { int l, r, k; scanf("%d%d%d",&l,&r,&k); l--, r--; int len = r - l + 1; k %= len; roll(a, l, r), roll(a, l, l + k - 1), roll(a, l + k, r); } else { int x; scanf("%d",&x); printf("%lld\n",a[x-1]); } } return 0; }
- 1
信息
- ID
- 1083
- 时间
- 1500ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 86
- 已通过
- 6
- 上传者