Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const int N = 1e4+5;
- const int LOG = 18;
- int m[N][N];
- void solve() {
- ll n , q; cin>>n;
- vector<int> v(n + 1);
- for (int i = 1; i <= n; i++) {
- cin >> v[i];
- }
- for (int i = 1; i <= n; i++) {
- for (int j = 1; j <= n; j++) {
- m[i][j] = INT_MAX;
- }
- }
- for (int i = 1; i <= n; i++) {
- for (int j = i + 1; j <= n; j++) {
- m[n - i + 1][j] = abs(v[j] - v[i]);
- }
- }
- for (int i = 1; i <= n; i++) {
- for (int j = 1; j <= n; j++) {
- // cout<<m[i][j]<<" ";
- }
- // cout<<"\n";
- }
- for (int i = 1; i <= n; i++) {
- for (int j = 1; j <= n; j++) {
- int k = j + (j & -j);
- if(k <= n) {
- m[i][k] = min(m[i][k], m[i][j]);
- }
- }
- int k = i + (i & -i);
- if(k <= n) {
- for (int j = 1; j <= n; j++) {
- m[k][j] = min(m[k][j], m[i][j]);
- }
- }
- }
- cin>>q;
- while(q--)
- {
- int l , r; cin>>l>>r;
- l = n-l+1;
- int ans = INT_MAX;
- for (int i = l; i > 0; i -= (i&-i)) {
- for (int j = r; j > 0; j -= (j&-j)) {
- ans = min(ans, m[i][j]);
- }
- }
- cout<< ans<<"\n";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement