func_code_string: #include <bits/stdc++.h>      using namespace std;   const int c=200002, sok=2e9;   long long t[c], kom[c], h[c], ki[c], n, m, maxi;   priority_queue<pair<long long, int> > q;   vector<pair<long long, int> > ans;   int holvan(int a) {       if (!ki[a]) {           return a;       }       return ki[a]=holvan(ki[a]);   }   void unio(int a, int b) {       a=holvan(a), b=holvan(b);       ki[b]=a;       h[a]+=h[b];   }   void pb(int l, int r) {       long long sum=kom[r]-kom[l-1], d=(r-l+1), atl=(sum-1)/d;       q.push({atl, l});   }   int main()   {       ios_base::sync_with_stdio(false);       cin >> n >> m;       for (int i=1; i<=n; i++) {           cin >> t[i];           kom[i]=kom[i-1]+t[i], h[i]=1;           if (i<n) {               pb(i, i);           }       }       ans.push_back({sok, 0});       n--;       while (q.size()>0) {           long long ert=q.top().first, id=q.top().second;           q.pop();           if (!ki[id]) {               maxi=max(maxi, h[id]+h[id+h[id]]-1);               ans.push_back({ert, maxi});               int kov=id+h[id];               if (kov!=n+1) {                   unio(id, kov);                   pb(id, id+h[id]-1);               }           }       }       reverse(ans.begin(), ans.end());       int si=ans.size();       for (int i=si-2; i>=0; i--) {           ans[i].first=min(ans[i].first, ans[i+1].first);       }       for (int i=1; i<=m; i++) {           int x;           cin >> x;           int lo=-1, hi=ans.size(), mid;           while (hi-lo>1) {               mid=(lo+hi)/2;               if (ans[mid].first>=x) {                   hi=mid;               } else {                   lo=mid;               }           }           cout << ans[hi].second <<    ;       }       cout <<   n ;       return 0;   }   