AC代码(暴力+剪枝)
Select Code
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int a[200000+10], b[200000+10];
int main()
{
int t, n, i, q, l, r, h;
scanf("%d",&t);
while(t--)
{
memset(a,0,sizeof(a));
memset(b, 0, sizeof(b));
scanf("%d",&n);
for(i = 0; i<n; i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&q);
while(q--)
{
h = 0;
scanf("%d %d",&l, &r);
l--, r--;
if(r-l+1>10000)
printf("0\n");
else
{
for(i = l; i<=r; i++)
{
b[h++] = a[i];
}
sort(b, b+h);
int mini = 100000;
for(i = 1; i<h; i++)
{
mini = min(mini, b[i]-b[i-1]);
}
printf("%d\n",mini);
}
}
}
return 0;
}