RT,刚刚结束的比赛的T3。
求求dalao帮帮蒟蒻为什么会RE。
蒟蒻写的分块暴力。
代码:
#include<bits/stdc++.h>
using namespace std;
const int N = 100005,Q = 550;
int n,m,q,a[3 * N];
bool t[Q][N];
int f(int x){
return x / q;
}
int h(int x){
return x * q;
}
int main(){
scanf("%d%d",&n,&m);
q = sqrt(n);
for(int i = 0;i < n;i++){
scanf("%d",&a[i]);
t[f(i)][a[i]] = 1;
}
int l,r,k;
for(int hhh = 1;hhh <= m;hhh++){
scanf("%d%d%d",&l,&r,&k);
l--,r--;
int ans = 1e9;
if(f(l) == f(r)){
for(int i = l;i <= r;i++) ans = min(ans,a[i] % k);
} else {
for(int i = l;i < h(f(l) + 1);i++) ans = min(ans,a[i] % k);
for(int i = r;i >= h(f(r));i--) ans = min(ans,a[i] % k);
for(int i = f(l) + 1;i < f(r);i++){
for(int j = 0;j < ans;j++){
bool flag = false;
for(int o = 0;k * o + j <= 100000;o++) if(t[i][k * o + j]){
flag = true;
break;
}
if(flag){
ans = j;
break;
}
}
}
}
printf("%d\n",ans);
}
return 0;
}