func_code_string: #include <bits/stdc++.h>   using namespace std;   double EPS = 1e-9;   int INF = 1000000000;   long long INFF = 8000000000000000000LL;   double PI = acos(-1);   int dirx[8] = {-1, 0, 0, 1, -1, -1, 1, 1};   int diry[8] = {0, 1, -1, 0, -1, 1, -1, 1};   inline string IntToString(int a) {     char x[100];     sprintf(x,  %d , a);     string s = x;     return s;   }   inline int StringToInt(string a) {     char x[100];     int res;     strcpy(x, a.c_str());     sscanf(x,  %d , &res);     return res;   }   inline string GetString(void) {     char x[1000005];     scanf( %s , x);     string s = x;     return s;   }   inline string uppercase(string s) {     int n = (int)s.size();     for (int(i) = (0); (i) < (n); ++(i))       if (s[i] >=  a  && s[i] <=  z ) s[i] = s[i] -  a  +  A ;     return s;   }   inline string lowercase(string s) {     int n = (int)s.size();     for (int(i) = (0); (i) < (n); ++(i))       if (s[i] >=  A  && s[i] <=  Z ) s[i] = s[i] -  A  +  a ;     return s;   }   inline void OPEN(string s) {     freopen((s +  .in ).c_str(),  r , stdin);     freopen((s +  .out ).c_str(),  w , stdout);   }   int k, n1, n2, n3, t1, t2, t3;   priority_queue<int, vector<int>, greater<int> > satu, dua, tiga;   int t[100005];   bool can(int T) {     if ((int)satu.size() == n1 && satu.top() + t1 > T) return false;     if ((int)dua.size() == n2 && dua.top() + t2 > T + t1) return false;     if ((int)tiga.size() == n3 && tiga.top() + t3 > T + t1 + t2) return false;     return true;   }   int main() {     scanf( %d %d %d %d %d %d %d , &k, &n1, &n2, &n3, &t1, &t2, &t3);     int bef = 0;     for (int(i) = (0); (i) < (k); ++(i)) {       int ambil = bef;       int L = t[i - 1];       int R = INF;       while (L <= R) {         int M = (L + R) >> 1;         if (can(M)) {           ambil = M;           R = M - 1;         } else           L = M + 1;       }       if ((int)satu.size() == n1) {         satu.pop();       }       satu.push(ambil);       if ((int)dua.size() == n2) {         dua.pop();       }       dua.push(ambil + t1);       if ((int)tiga.size() == n3) {         tiga.pop();       }       tiga.push(ambil + t1 + t2);       if (i == k - 1) {         printf( %d n , ambil + t1 + t2 + t3);       }       bef = ambil;     }     return 0;   }   