QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#678592 | #9528. New Energy Vehicle | ucup-team5243# | WA | 32ms | 6788kb | C++23 | 13.9kb | 2024-10-26 15:28:06 | 2024-10-26 15:28:06 |
Judging History
answer
//line 1 "answer.cpp"
#if !__INCLUDE_LEVEL__
#include __FILE__
int solve() {
ll n,m; input(n, m);
vl a(n); input(a);
vector<pll> station(m+1);
station[0] = {0, 0};
rep(i, m) {
ll x,t; input(x, t);
station[i+1] = {x, t};
}
ll total = sum(a);
ll ans = 0;
ll carry = 0;
vl last(n, -INFL);
rep(i, 1, m+1) {
auto [x, t] = station[i];
auto [xi, ti] = station[i-1];
ll d = x - xi;
if (total < carry + d) return print(ans + total - carry);
carry += d;
ll sub = min(carry, a[t-1]);
chmin(sub, x - last[t-1]);
carry -= sub;
ans = x;
last[t-1] = x;
debug(i, total, carry);
}
print(ans + total - carry);
return 0;
}
int main() {
ll t; input(t);
rep(i, t) solve();
}
#else
//line 2 "/home/seekworser/.cpp_lib/competitive_library/competitive/std/std.hpp"
#include <bits/stdc++.h>
#ifndef LOCAL_TEST
#pragma GCC target ("avx")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#endif // LOCAL_TEST
using namespace std;
// 型名の短縮
using ll = long long;
using pii = pair<int, int>; using pll = pair<ll, ll>;
using vi = vector<int>; using vvi = vector<vi>; using vvvi = vector<vvi>;
using vl = vector<ll>; using vvl = vector<vl>; using vvvl = vector<vvl>;
using vb = vector<bool>; using vvb = vector<vb>; using vvvb = vector<vvb>;
using vc = vector<char>; using vvc = vector<vc>; using vvvc = vector<vvc>;
using vd = vector<double>; using vvd = vector<vd>; using vvvd = vector<vvd>;
using vs = vector<string>; using vvs = vector<vector<string>>; using vvvs = vector<vector<vector<string>>>;
template<typename T> vector<vector<T>> vv(int h, int w, T val = T()) { return vector(h, vector<T>(w, val)); }
template<typename T> vector<vector<vector<T>>> vvv(int h1, int h2, int h3, T val = T()) { return vector(h1, vector(h2, vector<T>(h3, val))); }
template<typename T> vector<vector<vector<vector<T>>>> vvvv(int h1, int h2, int h3, int h4, T val = T()) { return vector(h1, vector(h2, vector(h3, vector<T>(h4, val)))); }
template <class T> using priority_queue_min = priority_queue<T, vector<T>, greater<T>>;
// 定数の定義
constexpr double PI = 3.14159265358979323;
constexpr int INF = 100100111; constexpr ll INFL = 3300300300300300491LL;
float EPS = 1e-8; double EPSL = 1e-16;
template<typename T> bool eq(const T x, const T y) { return x == y; }
template<> bool eq<double>(const double x, const double y) { return abs(x - y) < EPSL; }
template<> bool eq<float>(const float x, const float y) { return abs(x - y) < EPS; }
template<typename T> bool neq(const T x, const T y) { return !(eq<T>(x, y)); }
template<typename T> bool ge(const T x, const T y) { return (eq<T>(x, y) || (x > y)); }
template<typename T> bool le(const T x, const T y) { return (eq<T>(x, y) || (x < y)); }
template<typename T> bool gt(const T x, const T y) { return !(le<T>(x, y)); }
template<typename T> bool lt(const T x, const T y) { return !(ge<T>(x, y)); }
constexpr int MODINT998244353 = 998244353;
constexpr int MODINT1000000007 = 1000000007;
// 入出力高速化
struct Nyan { Nyan() { cin.tie(nullptr); ios::sync_with_stdio(false); cout << fixed << setprecision(18); } } nyan;
// 汎用マクロの定義
#define all(a) (a).begin(), (a).end()
#define sz(x) ((ll)(x).size())
#define rep1(n) for(ll dummy_iter = 0LL; dummy_iter < n; ++dummy_iter) // 0 から n-1 まで昇順
#define rep2(i, n) for(ll i = 0LL, i##_counter = 0LL; i##_counter < ll(n); ++(i##_counter), (i) = i##_counter) // 0 から n-1 まで昇順
#define rep3(i, s, t) for(ll i = ll(s), i##_counter = ll(s); i##_counter < ll(t); ++(i##_counter), (i) = (i##_counter)) // s から t まで昇順
#define rep4(i, s, t, step) for(ll i##_counter = step > 0 ? ll(s) : -ll(s), i##_end = step > 0 ? ll(t) : -ll(t), i##_step = abs(step), i = ll(s); i##_counter < i##_end; i##_counter += i##_step, i = step > 0 ? i##_counter : -i##_counter) // s から t まで stepずつ
#define overload4(a, b, c, d, e, ...) e
#define rep(...) overload4(__VA_ARGS__, rep4, rep3, rep2, rep1)(__VA_ARGS__)
#define repe(a, v) for(auto& a : (v)) // v の全要素(変更可能)
#define smod(n, m) ((((n) % (m)) + (m)) % (m)) // 非負mod
#define sdiv(n, m) (((n) - smod(n, m)) / (m)) // 非負div
#define uniq(a) {sort(all(a)); (a).erase(unique(all(a)), (a).end());} // 重複除去
int Yes(bool b=true) { cout << (b ? "Yes\n" : "No\n"); return 0; };
int YES(bool b=true) { cout << (b ? "YES\n" : "NO\n"); return 0; };
int No(bool b=true) {return Yes(!b);};
int NO(bool b=true) {return YES(!b);};
template<typename T, size_t N> T max(array<T, N>& a) { return *max_element(all(a)); };
template<typename T, size_t N> T min(array<T, N>& a) { return *min_element(all(a)); };
template<typename T> T max(vector<T>& a) { return *max_element(all(a)); };
template<typename T> T min(vector<T>& a) { return *min_element(all(a)); };
template<typename T> vector<T> accum(const vector<T>& a) { vector<T> rev(sz(a)+1, 0); rep(i, sz(a)) rev[i+1] = rev[i] + a[i]; return rev; };
template<typename T> vector<T> vec_slice(const vector<T>& a, int l, int r) { vector<T> rev; rep(i, l, r) rev.push_back(a[i]); return rev; };
template<typename T> T sum(vector<T>& a, T zero = T(0)) { T rev = zero; rep(i, sz(a)) rev += a[i]; return rev; };
template<typename T> bool in_range(const T& val, const T& s, const T& t) { return s <= val && val < t; };
template <class T> inline vector<T>& operator--(vector<T>& v) { repe(x, v) --x; return v; }
template <class T> inline vector<T>& operator++(vector<T>& v) { repe(x, v) ++x; return v; }
// modでのpow
ll powm(ll a, ll n, ll mod=INFL) {
ll res = 1;
while (n > 0) {
if (n & 1) res = (res * a) % mod;
if (n > 1) a = (a * a) % mod;
n >>= 1;
}
return res;
}
// 整数Sqrt
ll sqrtll(ll x) {
assert(x >= 0);
ll rev = sqrt(x);
while(rev * rev > x) --rev;
while((rev+1) * (rev+1)<=x) ++rev;
return rev;
}
template <class T> inline bool chmax(T& M, const T& x) { if (M < x) { M = x; return true; } return false; } // 最大値を更新(更新されたら true を返す)
template <class T> inline bool chmin(T& m, const T& x) { if (m > x) { m = x; return true; } return false; } // 最小値を更新(更新されたら true を返す)
int digit(ll x, int d=10) { int rev=0; while (x > 0) { rev++; x /= d;}; return rev; } // xのd進数桁数
/**
* @brief std.hpp
* @docs docs/std/std.md
*/
//line 3 "/home/seekworser/.cpp_lib/competitive_library/competitive/graph/graph.hpp"
template <class Cost> struct Graph{
public:
struct Edge {
int to;
Cost cost;
Edge() {};
Edge(int _to, Cost _cost) : to(_to), cost(_cost) {};
};
struct AdjacencyListRange{
using iterator = typename std::vector<Edge>::const_iterator;
iterator begi, endi;
iterator begin() const { return begi; }
iterator end() const { return endi; }
int size() const { return (int)distance(begi, endi); }
const Edge& operator[](int i) const { return begi[i]; }
};
private:
public:
vector<Edge> E;
vector<int> I;
int n;
Graph() : n(0) {}
Graph(int _n) : n(_n) {}
Graph(int _n, const vector<int>& from, vector<int>& to, vector<Cost>& cost, bool rev = false) : n(_n) {
vector<int> buf(n+1, 0);
for(int i=0; i<(int)from.size(); i++){
++buf[from[i]];
if (rev) ++buf[to[i]];
}
for(int i=1; i<=_n; i++) buf[i] += buf[i-1];
E.resize(buf[n]);
for(int i=(int)from.size()-1; i>=0; i--){
int u = from[i];
int v = to[i];
Cost c = cost[i];
E[--buf[u]] = Edge(v, c);
if(rev) E[--buf[v]] = Edge(u, c);
}
I = move(buf);
}
AdjacencyListRange operator[](int u) const {
return AdjacencyListRange{ E.begin() + I[u], E.begin() + I[u+1] };
}
int num_vertices() const { return n; }
int size() const { return num_vertices(); }
int num_edges() const { return E.size(); }
Graph<Cost> reversed_edges() const {
Graph<Cost> res;
int _n = res.n = n;
vi buf(n+1, 0);
for(auto v : E) ++buf[v.to];
for(int i=1; i<=n; i++) buf[i] += buf[i-1];
res.E.resize(buf[n]);
for(int u=0; u<n; u++) for(auto v : operator[](u)) res.E[--buf[v.to]] = {u, v.cost};
res.I = std::move(buf);
return res;
}
};
template <class T> ostream& operator<<(ostream& os, Graph<T> g) {
bool first = true;
rep(i, g.n) repe(e, g[i]) {
if (first) first = false;
else os << endl;
os << i << "->" << e.to << ": " << e.cost;
}
return os;
}
/**
* @brief graph.hpp
* @docs docs/graph/graph.md
*/
//line 3 "/home/seekworser/.cpp_lib/competitive_library/competitive/std/io.hpp"
// 演算子オーバーロード(プロトタイプ宣言)
template <class T, class U> inline istream& operator>>(istream& is, pair<T, U>& p);
template <class T> inline istream& operator>>(istream& is, vector<T>& v);
template <class T, class U> inline ostream& operator<<(ostream& os, const pair<T, U>& p);
template <class T> inline ostream& operator<<(ostream& os, const vector<T>& v);
template <typename T, typename S> ostream &operator<<(ostream &os, const map<T, S> &mp);
template <typename T> ostream &operator<<(ostream &os, const set<T> &st);
template <typename T> ostream &operator<<(ostream &os, const multiset<T> &st);
template <typename T> ostream &operator<<(ostream &os, const unordered_set<T> &st);
template <typename T> ostream &operator<<(ostream &os, queue<T> q);
template <typename T> ostream &operator<<(ostream &os, deque<T> q);
template <typename T> ostream &operator<<(ostream &os, stack<T> st);
template <class T, class Container, class Compare> ostream &operator<<(ostream &os, priority_queue<T, Container, Compare> pq);
// 演算子オーバーロード
template <class T, class U> inline istream& operator>>(istream& is, pair<T, U>& p) { is >> p.first >> p.second; return is; }
template <class T> inline istream& operator>>(istream& is, vector<T>& v) { repe(x, v) is >> x; return is; }
template <class T, class U> inline ostream& operator<<(ostream& os, const pair<T, U>& p) { os << p.first << " " << p.second; return os; }
template <class T> inline ostream& operator<<(ostream& os, const vector<T>& v) { rep(i, sz(v)) { os << v.at(i); if (i != sz(v) - 1) os << " "; } return os; }
template <typename T, typename S> ostream &operator<<(ostream &os, const map<T, S> &mp) { for (auto &[key, val] : mp) { os << key << ":" << val << " "; } return os; }
template <typename T> ostream &operator<<(ostream &os, const set<T> &st) { auto itr = st.begin(); for (int i = 0; i < (int)st.size(); i++) { os << *itr << (i + 1 != (int)st.size() ? " " : ""); itr++; } return os; }
template <typename T> ostream &operator<<(ostream &os, const multiset<T> &st) { auto itr = st.begin(); for (int i = 0; i < (int)st.size(); i++) { os << *itr << (i + 1 != (int)st.size() ? " " : ""); itr++; } return os; }
template <typename T> ostream &operator<<(ostream &os, const unordered_set<T> &st) { ll cnt = 0; for (auto &e : st) { os << e << (++cnt != (int)st.size() ? " " : ""); } return os; }
template <typename T> ostream &operator<<(ostream &os, queue<T> q) { while (q.size()) { os << q.front() << " "; q.pop(); } return os; }
template <typename T> ostream &operator<<(ostream &os, deque<T> q) { while (q.size()) { os << q.front() << " "; q.pop_front(); } return os; }
template <typename T> ostream &operator<<(ostream &os, stack<T> st) { while (st.size()) { os << st.top() << " "; st.pop(); } return os; }
template <class T, class Container, class Compare> ostream &operator<<(ostream &os, priority_queue<T, Container, Compare> pq) { while (pq.size()) { os << pq.top() << " "; pq.pop(); } return os; }
template <typename T> int print_sep_end(string sep, string end, const T& val) { (void)sep; cout << val << end; return 0; };
template <typename T1, typename... T2> int print_sep_end(string sep, string end, const T1 &val, const T2 &...remain) {
cout << val << sep;
print_sep_end(sep, end, remain...);
return 0;
};
template <typename... T> int print(const T &...args) { print_sep_end(" ", "\n", args...); return 0; };
template <typename... T> void flush() { cout << flush; };
template <typename... T> int print_and_flush(const T &...args) { print(args...); flush(); return 0; };
#define debug(...) debug_func(0, #__VA_ARGS__, __VA_ARGS__) // debug print
template <typename T> void input(T &a) { cin >> a; };
template <typename T1, typename... T2> void input(T1&a, T2 &...b) { cin >> a; input(b...); };
#ifdef LOCAL_TEST
template <typename T> void debug_func(int i, const T name) { (void)i; (void)name; cerr << endl; }
template <typename T1, typename T2, typename... T3> void debug_func(int i, const T1 &name, const T2 &a, const T3 &...b) {
int scope = 0;
for ( ; (scope != 0 || name[i] != ',') && name[i] != '\0'; i++ ) {
cerr << name[i];
if (name[i] == '(' || name[i] == '{') scope++;
if (name[i] == ')' || name[i] == '}') scope--;
}
cerr << ":" << a << " ";
debug_func(i + 1, name, b...);
}
template <typename T1, typename T2, typename... T3> void debug_func(int i, const T1 &name, T2 &a, T3 &...b) {
int scope = 0;
for ( ; (scope != 0 || name[i] != ',') && name[i] != '\0'; i++ ) {
cerr << name[i];
if (name[i] == '(' || name[i] == '{') scope++;
if (name[i] == ')' || name[i] == '}') scope--;
}
cerr << ":" << a << " ";
debug_func(i + 1, name, b...);
}
#endif
#ifndef LOCAL_TEST
template <typename... T>
void debug_func(T &...) {}
template <typename... T>
void debug_func(const T &...) {}
#endif
/**
* @brief io.hpp
* @docs docs/std/io.md
*/
//line 40 "answer.cpp"
#endif
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3540kb
input:
2 3 1 3 3 3 8 1 2 2 5 2 1 2 2 1
output:
12 9
result:
ok 2 lines
Test #2:
score: 0
Accepted
time: 0ms
memory: 3720kb
input:
6 3 2 2 2 2 6 1 7 1 2 2 3 3 2 1 6 2 2 3 2 2 5 1 7 2 9 1 2 2 3 3 2 1 6 2 1 1 999999999 1000000000 1 1 1 1000000000 1000000000 1
output:
9 11 4 11 999999999 2000000000
result:
ok 6 lines
Test #3:
score: 0
Accepted
time: 18ms
memory: 6788kb
input:
10 230 8042 599 1039 69 1011 1366 824 14117 1523 806 5002 332 55 3769 996 359 1040 255 1135 3454 3609 6358 2509 3695 8785 3890 1304 3394 14611 33 89 2245 508 22 1043 10411 628 1279 714 903 585 7413 5099 845 148 4689 2110 8683 1613 143 3263 2599 110 244 3297 4742 1571 425 1822 15692 572 9397 328 1691...
output:
1543020 1578939 1526016 1527381 1547404 1564631 1051729 1548178 1114634 1072253
result:
ok 10 lines
Test #4:
score: 0
Accepted
time: 22ms
memory: 6392kb
input:
3 100000 100000 1 2 1 1 10 1 17 34 1 1 20 14 4 24 3 1 3 2 7 4 6 3 1 18 1 4 2 1 3 8 3 2 4 1 10 4 23 14 4 16 4 9 8 3 5 2 6 2 2 3 1 7 3 25 10 3 5 3 1 2 14 3 1 3 8 19 3 4 5 7 4 22 2 2 3 3 8 11 8 8 1 9 1 4 2 10 9 8 13 7 21 14 1 27 4 3 2 13 8 1 3 1 5 1 1 1 12 3 4 2 4 10 2 2 10 2 2 14 1 11 1 1 6 1 1 1 2 4 ...
output:
1117713 1116035 1092827
result:
ok 3 lines
Test #5:
score: 0
Accepted
time: 32ms
memory: 6404kb
input:
3 100000 100000 2086 178 3183 10562 8083 1408 4312 2370 4331 1721 2154 6155 7176 1991 30048 7425 9493 1709 7640 3726 182 2462 1597 2865 649 8069 3419 6510 8556 680 49 68 9820 13378 799 2489 1466 8877 8695 2235 915 2579 524 6615 20680 7704 4325 4696 8853 5492 1417 4342 1740 2355 2255 5297 15035 5003 ...
output:
1099515229 1100014648 1105660500
result:
ok 3 lines
Test #6:
score: 0
Accepted
time: 22ms
memory: 6164kb
input:
100 13 889 5025 26312 1491 20523 204842 40921 5217 25853 24382 141405 54635 22605 118412 322 6 947 11 1292 7 1623 12 2338 11 5106 10 6276 5 6431 13 7597 2 8146 7 8453 7 8584 4 8707 6 9101 9 9893 2 11005 4 11485 8 13038 13 14944 3 15446 10 15628 8 19159 11 22478 8 22578 4 22766 6 23126 9 23751 4 2428...
output:
1691613 1561310 1544245 1529735 1539251 1516799 1385996 1582874 1653896 1512971 1560229 1532528 1511543 1614493 1269091 1569271 1611465 1393316 1580864 1509906 1538109 1485451 1628468 1602748 1600142 1518899 1551518 1495938 1366971 1591610 1767676 1493664 1110409 1361629 1594253 1558880 1518585 1611...
result:
ok 100 lines
Test #7:
score: -100
Wrong Answer
time: 21ms
memory: 6036kb
input:
1000 5 25 340189 81050 146130 30674 28622 4493 4 37984 2 52193 3 61793 2 115690 5 130543 5 245456 3 248978 5 264551 5 274211 4 415333 2 460810 4 480559 4 548296 5 637827 4 721031 1 727923 5 735966 3 813757 3 845720 1 852588 1 854790 4 936679 5 965839 3 999998 3 5 16 14297 156501 65755 250783 822 853...
output:
1626663 1488157 1658797 1514615 1569920 1428625 1530045 1785530 1630833 1749741 1479222 1678454 1440264 1324451 1768901 1254187 1622417 1656719 1658045 1692421 1480107 1601863 1513270 1502723 1826037 1469145 1462805 1794662 281197 1330591 1418537 1700673 1407186 789605 1583186 1499408 1304835 170747...
result:
wrong answer 16th lines differ - expected: '1238715', found: '1254187'