Submission #1518386


Source Code Expand

#include <bits/stdc++.h>
#include <math.h>
#define uint unsigned long long
#define ll long long
#define db double
#define ls rt << 1
#define rs rt << 1 | 1
#define pb push_back
#define mp make_pair
#define pii pair<int, int>
#define X first
#define Y second
#define pcc pair<char, char>
#define vi vector<int>
#define vl vector<ll>
#define rep(i, x, y) for(int i = x; i <= y; i ++)
#define rrep(i, x, y) for(int i = x; i >= y; i --)
#define ept 1e-9

using namespace std;
inline int read()
{
    int x = 0, f = 1; char ch = getchar();
    while (ch < '0' || ch > '9') { if (ch == '-') f = -1; ch = getchar(); }
    while (ch >= '0' && ch <= '9') { x = x * 10 + ch - '0'; ch = getchar(); }
    return x * f;
}
const int mod = 1e9 + 7;
ll ps[200010], as[200010];
vector<int>pos;
void cut(ll &val, int pos1, int pos2)
{
    if (pos1 > pos2) return;
    val -= as[pos2] - as[pos1 - 1];
}

int main()
{
    int n = read();
    int val = read();
    ps[1] = val;
    as[1] = val;
    rep(i, 2, n)
    {
        int val;
        char op;
        cin >> op;
        scanf("%d", &val);
        if (op == '+') ps[i] = ps[i - 1] + val;
       	else ps[i] = ps[i - 1] - val, pos.push_back(i);
        as[i] = as[i - 1] + val;
    }
    ll ans = ps[n];
    int nn = pos.size() - 2;
    rep(i, 0, nn)
    {
        int p1 = pos[i], p2 = pos[i + 1];
        ll tans = as[n] - as[p2 - 1];
        tans += ps[p1];
        cut(tans, p1 + 1, p2 - 1);
        ans = max(ans, tans);
    }
    cout << ans << endl;
    return 0;
}

Submission Info

Submission Time
Task E - Addition and Subtraction Hard
User lzr156
Language C++14 (GCC 5.4.1)
Score 900
Code Size 1574 Byte
Status AC
Exec Time 23 ms
Memory 2296 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:48:26: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d", &val);
                          ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 900 / 900
Status
AC × 3
AC × 29
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_alladd_01.txt, subtask_1_alladd_02.txt, subtask_1_alladd_03.txt, subtask_1_alladd_04.txt, subtask_1_allsub_01.txt, subtask_1_allsub_02.txt, subtask_1_allsub_03.txt, subtask_1_allsub_04.txt, subtask_1_cont_01.txt, subtask_1_cont_02.txt, subtask_1_cont_03.txt, subtask_1_cont_04.txt, subtask_1_killer_01.txt, subtask_1_killer_02.txt, subtask_1_killer_03.txt, subtask_1_killer_04.txt, subtask_1_max_01.txt, subtask_1_max_02.txt, subtask_1_max_03.txt, subtask_1_max_04.txt, subtask_1_min_01.txt, subtask_1_min_02.txt, subtask_1_rand_01.txt, subtask_1_rand_02.txt, subtask_1_rand_03.txt, subtask_1_rand_04.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 256 KB
sample_02.txt AC 1 ms 256 KB
sample_03.txt AC 1 ms 256 KB
subtask_1_alladd_01.txt AC 22 ms 1792 KB
subtask_1_alladd_02.txt AC 22 ms 1792 KB
subtask_1_alladd_03.txt AC 21 ms 1792 KB
subtask_1_alladd_04.txt AC 21 ms 1792 KB
subtask_1_allsub_01.txt AC 22 ms 2296 KB
subtask_1_allsub_02.txt AC 23 ms 2296 KB
subtask_1_allsub_03.txt AC 22 ms 2296 KB
subtask_1_allsub_04.txt AC 22 ms 2296 KB
subtask_1_cont_01.txt AC 12 ms 1280 KB
subtask_1_cont_02.txt AC 10 ms 1024 KB
subtask_1_cont_03.txt AC 8 ms 1024 KB
subtask_1_cont_04.txt AC 3 ms 384 KB
subtask_1_killer_01.txt AC 20 ms 1664 KB
subtask_1_killer_02.txt AC 14 ms 1280 KB
subtask_1_killer_03.txt AC 21 ms 1792 KB
subtask_1_killer_04.txt AC 14 ms 1280 KB
subtask_1_max_01.txt AC 22 ms 2172 KB
subtask_1_max_02.txt AC 22 ms 2172 KB
subtask_1_max_03.txt AC 22 ms 2172 KB
subtask_1_max_04.txt AC 22 ms 2172 KB
subtask_1_min_01.txt AC 1 ms 256 KB
subtask_1_min_02.txt AC 1 ms 256 KB
subtask_1_rand_01.txt AC 14 ms 1408 KB
subtask_1_rand_02.txt AC 17 ms 1664 KB
subtask_1_rand_03.txt AC 3 ms 384 KB
subtask_1_rand_04.txt AC 8 ms 896 KB