Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.63 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #include <cstdlib>
  3.  
  4. using namespace std;
  5. #define ll long long
  6.  
  7.  
  8. int main(int argc, char** argv) {
  9.     cin.sync_with_stdio(false);
  10.    
  11.     int n;
  12.     cin >> n;
  13.     cout << "hello";
  14.     int temps[n];
  15.     for (int i = 0; i < n; i++) {
  16.         int temp;
  17.         cin >> temp;
  18.         temps[i] = temp;
  19.     }
  20.     int q;
  21.     cin >> q;
  22.     vector<pair<int, int> > queries;
  23.     for (int i = 0; i < q; i++) {
  24.         int startDay;
  25.         int endDay;
  26.         cin >> startDay;
  27.         cin >> endDay;
  28.         queries.push_back(make_pair(startDay, endDay));
  29.     }
  30.     int subMins[n][n];
  31.     int subMaxs[n][n];
  32.     for (int exp = 0; pow(2,exp) < n+0.5; exp++) {
  33.         int len = pow(2,exp);
  34.         int a = 0;
  35.         int b = a+len-1;
  36.         while (a < n) {
  37.             if (b < n) {
  38.                 int minTemp = temps[a];
  39.                 int maxTemp = temps[a];
  40.                 for (int i = a; i <= b; a++) {
  41.                     minTemp = min(minTemp, temps[i]);
  42.                     maxTemp = max(maxTemp, temps[i]);
  43.                 }
  44.                 subMins[a][len] = minTemp;
  45.                 subMaxs[a][len] = maxTemp;
  46.             }
  47.         }
  48.     }
  49.     for (int i = 0; i < q; i++) {
  50.         int a = queries.at(i).first;
  51.         int b = queries.at(i).second;
  52.         int len = abs(b-a+1);
  53.         int partLen = (int) pow((int) log2(len),2);
  54.         int intervalMin = min(subMins[a][partLen], subMins[a+len-partLen][partLen]);
  55.         int intervalMax = max(subMaxs[a][partLen], subMaxs[a+len-partLen][partLen]);
  56.         cout << intervalMin << " " << intervalMax << "\n";
  57.     }
  58.     return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement