Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <algorithm>
- using namespace std;
- struct node {
- long long v, x;
- node() : v(0), x(0) {}
- node(long long v, long long x) : v(v), x(x) {}
- node operator + (node a) {return node(v + a.v, x + a.x);}
- };
- node a[1000010];
- long long f[1000010];
- int main() {
- long long i, j, k, x, y, l;
- cin >> i >> j >> k >> x >> y;
- if (i > j) {
- swap(i, j);
- swap(x, y);
- }
- a[i] = node(x, 0);
- a[j] = node(y, 0);
- a[i - 1] = node(0, 1);
- for(l = i + 1; l < j; l++)
- a[l] = a[l - 2] + a[l - 1];
- f[i - 1] = (a[j - 2].v - a[j - 1].v) / (a[j - 2].x + a[j - 1].x);
- f[i] = x;
- f[j] = y;
- if (j - i == 1)
- f[i - 1] = f[j] - f[i];
- if (k < i)
- for(l = i - 2; l >= k; l--)
- f[l] = f[l + 2] - f[l + 1];
- else
- for(l = i + 1; l <= k; l++)
- f[l] = f[l - 2] + f[l - 1];
- cout << f[k];
- return 0;
- }
Add Comment
Please, Sign In to add comment