Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
#include
using namespace std; const int inf = 0x3f3f3f3f; #define all(x) begin(x), end(x) template
bool ckmin(T1& a, T2 b) { return a > b ? a = b, true : false; } template
bool ckmax(T1& a, T2 b) { return a < b ? a = b, true : false; } const int nmax = 2e5; const int valmax = 2e5 + 5; int spf[valmax + 5]; vector
factors[valmax + 5]; int n; int a[nmax + 5]; int b[nmax + 5]; void testcase() { cin >> n; for (int i = 1; i <= n; ++i) { cin >> a[i]; } for (int i = 1; i <= n; ++i) { cin >> b[i]; } vector
ord(n); iota(all(ord), 1); sort(all(ord), [&](int i, int j) { return b[i] < b[j]; }); // am incercat operatii pe 2 numere long long answer = b[ord[0]] + b[ord[1]]; map
occ; for (int i = 1; i <= n; ++i) { for (auto& p : factors[a[i]]) { if (occ[p] > 0) { // exista si altundeva factorul p answer = 0; // am incercat operatii pe 0 numere } occ[p]++; } } // mai ramane sa incerc sa fac pe un singur numar // incerc sa fac o singura operatie pe orice numar for (int i = 1; i <= n; ++i) { for (auto& p : factors[a[i]]) { occ[p]--; } for (auto& p : factors[a[i] + 1]) { if (occ[p] > 0) { ckmin(answer, b[i]); } } for (auto& p : factors[a[i]]) { occ[p]++; } } // incerc sa fac operatii pe cel mai ieftin numar for (auto& p : factors[a[ord[0]]]) { occ[p]--; } for (auto& it : occ) { if (it.second > 0) { int p = it.first; ckmin(answer, 1ll * (p - a[ord[0]] % p) % p * b[ord[0]]); } } cout << answer << "\n"; } int main() { ios::sync_with_stdio(0); cin.tie(0); for (int i = 1; i <= valmax; ++i) { spf[i] = i; } for (int i = 2; i * i <= valmax; ++i) { if (spf[i] == i) { for (int j = i * i; j <= valmax; j += i) { ckmin(spf[j], i); } } } for (int i = 1; i <= valmax; ++i) { int x = i; while (x > 1) { if (factors[i].empty() or factors[i].back() != spf[x]) { factors[i].push_back(spf[x]); } x /= spf[x]; } } int tc = 1; cin >> tc; for (int t = 1; t <= tc; ++t) { #ifdef _DEBUG cerr << "=== Subtask " << t << " ===\n"; #endif testcase(); #ifdef _DEBUG cerr << "\n"; #endif } }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)