Submission #527880


Source Code Expand

/*{{{*/
#include <cassert>
#include <cctype>
#include <climits>
#include <cmath>
#include <cstdint>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <functional>
#include <bitset>
#include <deque>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <tuple>
#include <unordered_map>
#include <unordered_set>
#include <vector>
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
typedef int8_t sbyte;
typedef uint8_t byte;
typedef uint16_t ushort;
typedef uint32_t uint;
typedef int64_t i64;
typedef uint64_t u64;
template<class T> static inline T ABS(T x) {return x < 0 ? -x : x;}
template<class T> static inline void MAZ(T &a, const T &b) {if(a < b) a = b;}
template<class T> static inline void MIZ(T &a, const T &b) {if(b < a) a = b;}
/*}}}*/

static vector<pair<int, int>> K, A;

static i64 DP[301][301];

static i64 solve() {
	int nk = K.size(), na = A.size();
	for(auto i = nk - 1; i >= 0; i--) {
		for(auto j = na - 1; j >= 0; j--) {
			DP[i][j] = max(max(DP[i + 1][j], DP[i][j + 1]), -K[i].first + (i64)A[j].first * min(K[i].second, A[j].second) + DP[i + 1][j + 1]);
		}
	}
	return DP[0][0];
}

int main() {
	int n;
	scanf("%d", &n);
	vector<pair<int, int>> r(n);
	auto h = 0LL; auto m = 0;
	for(auto i = 0; i < n; i++) {
		scanf("%d%d", &r[i].first, &r[i].second);
		if(r[i].first == 2) {
			h += r[i].second;
			m++;
		}
	}
	for(auto i = 0; i < n; ) {
		if(r[i].first == 2) {
			m--;
			i++;
			continue;
		}
		vector<int> ks, as;
		do {
			if(r[i].first == 0) {
				ks.push_back(r[i].second);
			} else {
				as.push_back(r[i].second);
			}
		} while(++i < n && r[i].first != 2);
		sort(begin(ks), end(ks));
		sort(begin(as), end(as), greater<int>());
		for(auto k : ks) K.emplace_back(k, m);
		for(auto a : as) A.emplace_back(a, m);
	}
	printf("%lld\n", h - solve());
	return 0;
}

Submission Info

Submission Time
Task H - Dungeon
User arosusti
Language C++11 (GCC 4.8.1)
Score 0
Code Size 1956 Byte
Status WA
Exec Time 36 ms
Memory 1792 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:53:17: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d", &n);
                 ^
./Main.cpp:57:43: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d", &r[i].first, &r[i].second);
                                           ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 100
Status
AC × 3
AC × 20
WA × 38
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All colorful1_01.txt, colorful1_02.txt, colorful1_03.txt, colorful2_01.txt, colorful2_02.txt, colorful2_03.txt, colorful3_01.txt, colorful3_02.txt, colorful3_03.txt, corner_01.txt, corner_02.txt, corner_03.txt, corner_04.txt, corner_05.txt, corner_06.txt, interval_01.txt, interval_02.txt, interval_03.txt, interval_04.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_exp_01.txt, random_exp_02.txt, random_exp_03.txt, random_max_01.txt, random_max_02.txt, random_max_03.txt, random_max_04.txt, random_max_05.txt, random_max_06.txt, random_max_07.txt, random_max_08.txt, random_max_09.txt, random_max_10.txt, random_select_01.txt, random_select_02.txt, random_select_03.txt, random_select_04.txt, random_select_05.txt, random_select_06.txt, random_select_07.txt, random_select_08.txt, random_select_09.txt, random_select_10.txt, random_small_01.txt, random_small_02.txt, random_small_03.txt, random_small_04.txt, random_small_05.txt, random_small_06.txt, random_small_07.txt, random_small_08.txt, random_small_09.txt, random_small_10.txt
Case Name Status Exec Time Memory
colorful1_01.txt WA 30 ms 1372 KB
colorful1_02.txt WA 30 ms 1304 KB
colorful1_03.txt WA 29 ms 1308 KB
colorful2_01.txt WA 30 ms 1784 KB
colorful2_02.txt WA 32 ms 1760 KB
colorful2_03.txt WA 32 ms 1688 KB
colorful3_01.txt AC 32 ms 1756 KB
colorful3_02.txt AC 33 ms 1688 KB
colorful3_03.txt AC 34 ms 1752 KB
corner_01.txt AC 29 ms 1044 KB
corner_02.txt AC 31 ms 980 KB
corner_03.txt AC 31 ms 984 KB
corner_04.txt AC 32 ms 1232 KB
corner_05.txt AC 31 ms 988 KB
corner_06.txt AC 32 ms 1052 KB
interval_01.txt AC 32 ms 1192 KB
interval_02.txt AC 32 ms 1752 KB
interval_03.txt WA 32 ms 1752 KB
interval_04.txt WA 30 ms 1300 KB
random_01.txt AC 31 ms 1684 KB
random_02.txt WA 30 ms 1744 KB
random_03.txt AC 31 ms 1792 KB
random_04.txt AC 36 ms 1748 KB
random_05.txt AC 31 ms 1684 KB
random_06.txt AC 32 ms 1756 KB
random_exp_01.txt AC 31 ms 1748 KB
random_exp_02.txt WA 28 ms 1048 KB
random_exp_03.txt AC 32 ms 1048 KB
random_max_01.txt WA 31 ms 1688 KB
random_max_02.txt WA 32 ms 1688 KB
random_max_03.txt WA 31 ms 1680 KB
random_max_04.txt WA 31 ms 1744 KB
random_max_05.txt WA 33 ms 1756 KB
random_max_06.txt WA 34 ms 1684 KB
random_max_07.txt WA 31 ms 1756 KB
random_max_08.txt WA 30 ms 1688 KB
random_max_09.txt WA 30 ms 1688 KB
random_max_10.txt WA 29 ms 1684 KB
random_select_01.txt WA 28 ms 1308 KB
random_select_02.txt WA 30 ms 1300 KB
random_select_03.txt WA 29 ms 1308 KB
random_select_04.txt WA 28 ms 1308 KB
random_select_05.txt WA 30 ms 1300 KB
random_select_06.txt WA 30 ms 1360 KB
random_select_07.txt WA 28 ms 1308 KB
random_select_08.txt WA 29 ms 1388 KB
random_select_09.txt WA 29 ms 1304 KB
random_select_10.txt WA 29 ms 1304 KB
random_small_01.txt AC 28 ms 1056 KB
random_small_02.txt WA 28 ms 1044 KB
random_small_03.txt WA 28 ms 1052 KB
random_small_04.txt WA 27 ms 1060 KB
random_small_05.txt WA 28 ms 1172 KB
random_small_06.txt WA 29 ms 1300 KB
random_small_07.txt AC 30 ms 1236 KB
random_small_08.txt WA 30 ms 1300 KB
random_small_09.txt WA 31 ms 1304 KB
random_small_10.txt WA 30 ms 1300 KB
sample_01.txt AC 27 ms 984 KB
sample_02.txt AC 31 ms 1052 KB
sample_03.txt AC 30 ms 924 KB