#include<bits/stdc++.h> usingnamespace std; intread(){ int x; scanf("%d", &x); return x; } constint maxn = 2e5 + 10; constint INF = 1e9; int n, m, k, a[maxn]; int mod = 1e9 + 7; usingnamespace std;
intmain(){ n = read(), k = read(); for (int i = 1; i <= n; ++i) a[i] = read(); sort(a + 1, a + 1 + n); int l = 1, r = n - k + 1; while (l < r && r <= n - 1) { if (1ll * a[l] * a[l + 1] >= 1ll * a[r] * a[r + 1]) l += 2, r += 2; elsebreak; } if (a[n] < 0 && k & 1) l = 1, r = n - k + 1; int ans = 1; for (int i = 1; i < l; ++i) ans = 1ll * ans * ((a[i] + mod) % mod) % mod; for (int i = r; i <= n; ++i) ans = 1ll * ans * ((a[i] + mod) % mod) % mod; cout << ans << endl; return0; }
#include<bits/stdc++.h> usingnamespace std; constint maxn = 2e6 + 10; constint mod = 1e9 + 7; int n, m; int fac[maxn], ifac[maxn]; char s[maxn]; intmul(int x, int y){ return1ll * x * y % mod; } intfpw(int x, int y){ int r = 1; for (int i = y; i; i >>= 1, x = mul(x, x)) if (i & 1) r = mul(r, x); return r; } intinv(int x){ returnfpw(x, mod - 2); } intmul(int x, int y, int z){ returnmul(x, mul(y, z)); } intC(int n, int m){ returnmul(fac[n], ifac[m], ifac[n - m]); } intread(){ int x; scanf("%d", &x); return x; } intmain(){ #ifdef LOCAL freopen("1.in", "r", stdin); #endif n = read(); scanf("%s", s); m = strlen(s); fac[0] = ifac[0] = 1; for (int i = 1; i <= n + m; ++i) fac[i] = mul(fac[i - 1], i), ifac[i] = mul(ifac[i - 1], inv(i)); // new length = m + n int ans = 0; for (int i = 0; i <= n; ++i) { ans += mul(mul(C(m + i - 1, i), fpw(25, i)), fpw(26, n - i)); ans %= mod; } cout << ans << endl; }
#include<bits/stdc++.h> usingnamespace std; intread(){ int x; scanf("%d", &x); return x; } constint maxn = 3e5 + 10; constint INF = 1e9; int mod = 1e9 + 7; usingnamespace std;
#define ll long long int n, a[maxn], b[maxn]; ll ans; boolcmp(pair<int,int> a, pair<int,int> b){ return a.first == b.first ? a.second > b.second : a.first > b.first; } voidSolve(vector<pair<int,int> >&a){ set<int>X; for (int i = 1; i <= n; ++i) X.insert(i); for (int i = 0; i < a.size(); ++i) { pair<int,int>u = a[i]; set<int>::iterator It = X.upper_bound(u.second); if (It != X.begin()) { X.erase(--It); ans += u.first; } } } intmain(){ #ifdef LOCAL freopen("1.in", "r", stdin); #endif int T = read(); while (T--) { vector<pair<int,int> >L, R; n = read(); ans = 0; for (int i = 1; i <= n; ++i) { int k = read(), l = read(), r = read(); ans += min(l, r); if (l > r) L.push_back(make_pair(l - r, k)); else R.push_back(make_pair(r - l, n - k)); } sort(L.begin(), L.end(), cmp); sort(R.begin(), R.end(), cmp); Solve(L); Solve(R); cout << ans << endl; }
#include<bits/stdc++.h> usingnamespace std; constint maxn = 1e5 + 10; int fa[maxn], n, a[maxn]; char s[maxn], t[maxn]; intread(){ int x; scanf("%d", &x); return x; } intfindf(int x){ return fa[x] == x ? x : fa[x] = findf(fa[x]); } voidmerge(int x,int y){ int t = findf(x), p = findf(y); fa[t] = p; } intmain(){ #ifdef LOCAL freopen("1.in", "r", stdin); #endif int T = read(); while (T--) { int n = read(); for (int i = 1; i <= 20; ++i) fa[i] = i; scanf("%s", s + 1); scanf("%s", t + 1); bool fff = 0; for (int i = 1; i <= n; ++i) if (s[i] > t[i]) { fff = 1; break; } if (fff) { cout << "-1" << endl; continue; } int ans = 0; for (int i = 1; i <= n; ++i) { int x = s[i] - 'a' + 1, y = t[i] - 'a' + 1; if (findf(x) == findf(y)) continue; merge(x, y); ans++; } cout << ans << endl; } }