Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <string>#include <vector>#include <stack>#include <fstream>#include <unordered_map>#include <algorithm>using namespace std;typedef long long ll;ll mod = 1000000007;vector<ll> shiftSum;int find(ll a, vector<ll>& A, int l, int r){if (a >= A[r]) return r;if (a < A[l]) return -1;if (l > r) return -1;if (l == r) return A[l] > a ? -1 : l;if (l == r - 1) return l;int cur = (l + r) / 2;if (A[cur] == a) return cur;else if (A[cur] < a) return find(a, A, cur, r);return find(a, A, l, cur - 1);}ll f(ll K, ll p, int cur, vector<ll>& A){ll m = K - p;int index = find(m, A, 0, cur);