Submission #7025204


Source Code Expand

#include <algorithm>
#include <assert.h>
#include <iostream>
#include <cstring>
#include <vector>
#include <cstdio>
#include <cmath>

using namespace std;

typedef long long ll;

const int MX = 100005;

template <typename T> void read(T &x)
{
	x = 0; char c = getchar(); bool f = 0;
	while(!isdigit(c) && c!='-') c = getchar();
	if(c == '-') f = 1, c = getchar();
	while(isdigit(c)) x = x*10+c-'0', c = getchar();
	if(f) x = -x;
}

template <typename T> T max(const T &x, const T &y, const T &z)
{
	return max(max(x, y), z);
}

int n;
int opr[MX], seq[MX];
ll f[MX][3];

int main()
{
	read(n);
	opr[1] = +1;
	for(int i=1; i<=n; i++)
	{
		read(seq[i]);
		if(i != n)
		{
			char c = getchar();
			while(c!='+' && c!='-') c = getchar();
			if(c == '+') opr[i+1] = +1;
			else opr[i+1] = -1;
		}
	}
	f[0][1] = f[0][2] = -1e18;
	for(int i=1; i<=n; i++)
	{
		if(opr[i] == +1)
		{
			f[i][0] = max(f[i-1][0]+seq[i], f[i-1][1]+seq[i], f[i-1][2] + seq[i]);
			f[i][1] = max(f[i-1][1]-seq[i], f[i-1][2]-seq[i]);
			f[i][2] = f[i-1][2]+seq[i];
		}
		else
		{
			f[i][0] = -1e18;
			f[i][1] = max(f[i-1][0]-seq[i], f[i-1][1]-seq[i], f[i-1][2]-seq[i]);
			f[i][2] = max(f[i-1][1]+seq[i], f[i-1][2]+seq[i]);
		}
		//cout<<i<<" : "<<f[i][0]<<" "<<f[i][1]<<" "<<f[i][2]<<endl;
	}
	printf("%lld\n", max(f[n][0], f[n][1], f[n][2]));
	return 0;
}

Submission Info

Submission Time
Task E - Addition and Subtraction Hard
User boshi
Language C++14 (GCC 5.4.1)
Score 900
Code Size 1328 Byte
Status AC
Exec Time 13 ms
Memory 3328 KB

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 12 ms 3328 KB
subtask_1_alladd_02.txt AC 12 ms 3328 KB
subtask_1_alladd_03.txt AC 12 ms 3328 KB
subtask_1_alladd_04.txt AC 12 ms 3328 KB
subtask_1_allsub_01.txt AC 12 ms 3328 KB
subtask_1_allsub_02.txt AC 12 ms 3328 KB
subtask_1_allsub_03.txt AC 12 ms 3328 KB
subtask_1_allsub_04.txt AC 12 ms 3328 KB
subtask_1_cont_01.txt AC 7 ms 1920 KB
subtask_1_cont_02.txt AC 6 ms 1536 KB
subtask_1_cont_03.txt AC 5 ms 1280 KB
subtask_1_cont_04.txt AC 2 ms 512 KB
subtask_1_killer_01.txt AC 11 ms 3200 KB
subtask_1_killer_02.txt AC 8 ms 2304 KB
subtask_1_killer_03.txt AC 12 ms 3200 KB
subtask_1_killer_04.txt AC 8 ms 2304 KB
subtask_1_max_01.txt AC 13 ms 3328 KB
subtask_1_max_02.txt AC 13 ms 3328 KB
subtask_1_max_03.txt AC 13 ms 3328 KB
subtask_1_max_04.txt AC 13 ms 3328 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 8 ms 2176 KB
subtask_1_rand_02.txt AC 10 ms 2432 KB
subtask_1_rand_03.txt AC 2 ms 512 KB
subtask_1_rand_04.txt AC 5 ms 1152 KB