func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long N = 4e5 + 5;   pair<long long, long long> arr[N];   long long l[N];   long long s[N];   long long dp[N];   long long bit[N];   long long n;   void update(long long idx, long long val) {     while (idx <= n) {       bit[idx] = max(bit[idx], val);       idx += idx & -idx;     }   }   long long query(long long idx) {     long long res = 0;     while (idx) {       res = max(res, bit[idx]);       idx -= idx & -idx;     }     return res;   }   int main() {     scanf( %lld , &n);     for (long long i = 1; i <= n; i++) {       long long r, h;       scanf( %lld%lld , &r, &h);       arr[i] = pair<long long, long long>(r * r * h, -i);     }     sort(arr + 1, arr + n + 1);     for (long long i = 1; i <= n; i++) {       dp[i] = max(arr[i].first, query(-arr[i].second) + arr[i].first);       update(-arr[i].second, dp[i]);     }     printf( %.7lf n , 3.14159265358979323846 * query(n));     return 0;   }   