Submission #994477
Source Code Expand
#include <iostream> #include <iomanip> #include <cstdio> #include <algorithm> #include <numeric> #include <random> #include <vector> #include <array> #include <bitset> #include <set> #include <unordered_set> #include <map> #include <unordered_map> #include <cassert> using namespace std; using ll = long long; using ull = unsigned long long; constexpr ll TEN(int n) { return (n==0) ? 1 : 10*TEN(n-1); } int bsr(int x) { return 31 - __builtin_clz(x); } struct UnionFind { vector<int> ig; vector<vector<int>> gi; int gn; UnionFind(int N) { ig.resize(N); gi.resize(N); for (int i = 0; i < N; i++) { ig[i] = i; gi[i] = {i}; } gn = N; } void merge(int a, int b) { if (same(a, b)) return; gn--; int x = ig[a], y = ig[b]; if (gi[x].size() < gi[y].size()) swap(x, y); for (int j: gi[y]) { ig[j] = x; } gi[x].insert(gi[x].end(), gi[y].begin(), gi[y].end()); gi[y].clear(); } bool same(int a, int b) { return ig[a] == ig[b]; } }; const int MN = 200100; int n; ll a[MN], as[MN]; ll calc(ll x) { ll mi = as[n-1]-x; for (int i = n-2; i >= 2; i--) { mi = min(mi, 2*as[i]-mi); } return a[0]-mi+as[1]; } int main() { ios::sync_with_stdio(0); cout << setprecision(20); cin >> n; for (int i = 0; i < n-1; i++) { cin >> a[i]; } as[0] = 0; for (int i = 0; i < n-1; i++) { as[i+1] = as[i]+a[i]; } map<int, int> mp; int m; cin >> m; UnionFind uf(m); for (int i = 0; i < m; i++) { int x; cin >> x; int y = as[n-1]-x; if (mp.count(y)) { uf.merge(i, mp[y]); } else { mp[y] = i; } } for (int i = n-2; i >= 2; i--) { while (true) { assert(mp.size()); auto it = mp.end(); it--; auto p = *it; if (p.first <= as[i]) break; int np = 2*as[i]-p.first; mp.erase(it); if (mp.count(np)) { // cout << "M " << p.second << " " << mp[np] << endl; uf.merge(p.second, mp[np]); } else { mp[np] = p.second; } } } int res[MN]; for (auto p: mp) { // cout << p.first << " " << p.second << endl; for (int d: uf.gi[uf.ig[p.second]]) { res[d] = a[0] - p.first + as[1]; } } for (int i = 0; i < m; i++) { cout << res[i] << endl; } /* for (int i = 0; i < m; i++) { int x; cin >> x; cout << calc(x) << endl; }*/ return 0; }
Submission Info
Submission Time | |
---|---|
Task | H - Tokaido |
User | yosupo |
Language | C++14 (GCC 5.4.1) |
Score | 1600 |
Code Size | 2814 Byte |
Status | AC |
Exec Time | 1128 ms |
Memory | 27232 KB |
Judge Result
Set Name | sample | dataset1 | dataset2 | ||||||
---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 700 / 700 | 900 / 900 | ||||||
Status |
|
|
|
Set Name | Test Cases |
---|---|
sample | sample-01.txt, sample-02.txt |
dataset1 | sample-01.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt |
dataset2 | sample-01.txt, sample-02.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 02-13.txt, 02-14.txt, 02-15.txt, 02-16.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
01-01.txt | AC | 18 ms | 3456 KB |
01-02.txt | AC | 3 ms | 256 KB |
01-03.txt | AC | 3 ms | 256 KB |
01-04.txt | AC | 15 ms | 1792 KB |
01-05.txt | AC | 19 ms | 3456 KB |
01-06.txt | AC | 25 ms | 3328 KB |
01-07.txt | AC | 8 ms | 1152 KB |
01-08.txt | AC | 25 ms | 3328 KB |
01-09.txt | AC | 23 ms | 3456 KB |
01-10.txt | AC | 3 ms | 256 KB |
01-11.txt | AC | 6 ms | 896 KB |
01-12.txt | AC | 18 ms | 3328 KB |
01-13.txt | AC | 20 ms | 3456 KB |
01-14.txt | AC | 19 ms | 3328 KB |
01-15.txt | AC | 19 ms | 3328 KB |
01-16.txt | AC | 19 ms | 3328 KB |
01-17.txt | AC | 19 ms | 3328 KB |
01-18.txt | AC | 19 ms | 3328 KB |
01-19.txt | AC | 19 ms | 3328 KB |
02-01.txt | AC | 126 ms | 3584 KB |
02-02.txt | AC | 1055 ms | 27136 KB |
02-03.txt | AC | 1095 ms | 25852 KB |
02-04.txt | AC | 1093 ms | 26412 KB |
02-05.txt | AC | 1128 ms | 25656 KB |
02-06.txt | AC | 1084 ms | 26388 KB |
02-07.txt | AC | 1084 ms | 26648 KB |
02-08.txt | AC | 1098 ms | 23296 KB |
02-09.txt | AC | 1093 ms | 23168 KB |
02-10.txt | AC | 1070 ms | 25088 KB |
02-11.txt | AC | 1077 ms | 27232 KB |
02-12.txt | AC | 1062 ms | 26800 KB |
02-13.txt | AC | 1060 ms | 26868 KB |
02-14.txt | AC | 1069 ms | 26368 KB |
02-15.txt | AC | 1023 ms | 26624 KB |
02-16.txt | AC | 1023 ms | 26496 KB |
sample-01.txt | AC | 3 ms | 256 KB |
sample-02.txt | AC | 3 ms | 256 KB |