func_code_string: #include <bits/stdc++.h>   struct Point {     double x, y;   };   struct Polygon {     Point p[100000];     int n;     inline double get(int i, double x) {       if (i < 0) return p[0].y;       if (i >= n - 1) return p[n - 1].y;       return p[i].y +              (x - p[i].x) * (p[i + 1].y - p[i].y) / (p[i + 1].x - p[i].x);     }     double area() {       double sum = 0;       for (int i = 0; i < n - 1; i++)         sum += (p[i + 1].x - p[i].x) * (p[i + 1].y + p[i].y) / 2;       return sum;     }   };   Polygon poly[2];   Polygon inp;   Polygon ta;   Polygon tb;   void intersect(Polygon& res, Polygon& a, Polygon& b) {     ta.n = tb.n = res.n = 0;     int ai = 0, bi = 0;     while (ai < a.n || bi < b.n) {       if (ai < a.n && (bi >= b.n || a.p[ai].x < b.p[bi].x)) {         tb.p[tb.n].x = a.p[ai].x;         tb.p[tb.n++].y = b.get(bi - 1, a.p[ai].x);         ta.p[ta.n++] = a.p[ai++];       } else {         ta.p[ta.n].x = b.p[bi].x;         ta.p[ta.n++].y = a.get(ai - 1, b.p[bi].x);         tb.p[tb.n++] = b.p[bi++];       }     }     for (int i = 0, next = 0; i < ta.n; i = next) {       while (next < ta.n && ta.p[next].x - ta.p[i].x < 1e-6) next++;       res.p[res.n].x = ta.p[i].x;       res.p[res.n++].y = (ta.p[i].y > tb.p[i].y ? ta.p[i].y : tb.p[i].y);       if (next < ta.n &&           (ta.p[i].y - tb.p[i].y) * (ta.p[next].y - tb.p[next].y) < -1e-6) {         double t = (tb.p[i].y - ta.p[i].y) /                    (ta.p[next].y - ta.p[i].y - tb.p[next].y + tb.p[i].y);         res.p[res.n].x = ta.p[i].x + t * (ta.p[next].x - ta.p[i].x);         res.p[res.n++].y = ta.p[i].y + t * (ta.p[next].y - ta.p[i].y);       }     }   }   int main() {     int n;     scanf( %d%d , &n, &inp.n);     inp.n++;     for (int i = 0; i < inp.n; i++) inp.p[i].x = i;     int cur = 0;     double prev = 0;     for (int i = 0; i < n; i++) {       for (int j = 0; j < inp.n; j++) scanf( %lf , &inp.p[j].y);       if (i == 0)         memcpy(&poly[1 - cur], &inp, sizeof inp);       else         intersect(poly[1 - cur], poly[cur], inp);       cur = 1 - cur;       double area = poly[cur].area();       printf( %lf n , area - prev);       prev = area;     }     return 0;   }   