답안 #321664

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
321664 2020-11-13T02:54:39 Z Kevin_Zhang_TW Semiexpress (JOI17_semiexpress) C++17
18 / 100
1 ms 384 KB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define AI(i) begin(i), end(i)
#define pb emplace_back
#ifdef KEV
#define DE(args...) kout("[ " + string(#args) + " ] = ", args)
void kout() { cerr << endl; }
template <class T, class ...U> 
void kout(T a, U ...b) { cerr << a << ' ', kout(b...); }
template <class T>
void debug(T l, T r) { while (l != r) cerr << *l << " \n"[next(l) == r], ++l; }
#else
#define DE(...) 0
#define debug(...) 0
#endif

template <class T>
bool chmin(T &a, T b) { return b < a ? (a = b, true) : false; }
template <class T>
bool chmax(T &a, T b) { return a < b ? (a = b, true) : false; }

const int MAX_N = 3010;
int n, m, k;
ll a, b, c, T;
#define int ll
int s[MAX_N];
int solve() {
	int ad = k - m, res = 0;

	vector<int> obj;

	for (int i = 1;i <= m;++i) {
		ll et = (s[i] - 1) * b;
		DE(i, et);
		if (et > T) break;
		cerr << "Solving\n";

		if (i == m) {
			++res;
			break;
		}
		int id = s[i];
		DE(s[i], ad, et);

		for (int u = 0; (ad > 0 || ad == 0 && id == s[i]) && id < s[i+1]; ++u) {
			ll ex = (T - et) / a;
			DE(id, ex, et);

			if (et > T) break;

			if (id + ex < s[i+1]) {
				if (id != s[i])
					--ad;
				res += ex + 1;
				id += ex + 1;
				et += c * ex + c;
				DE(res, ad);
			}
			else {
				cerr << "no take\n";
				obj.pb( s[i+1] - id );
				if (id == s[i])
					res += obj.back(), obj.pop_back();
				break;
			}
		}
	}
	DE(res);
	DE(ad);
	debug(AI(obj));
	sort(AI(obj));
	while (ad-- && obj.size())
		res += obj.back(), obj.pop_back();
	return res - 1;
}
int32_t main() {
	ios_base::sync_with_stdio(0), cin.tie(0);
	cin >> n >> m >> k >> a >> b >> c >> T;
	for (int i = 1;i <= m;++i)
		cin >> s[i];
	cout << solve() << '\n';
}

Compilation message

semiexpress.cpp: In function 'll solve()':
semiexpress.cpp:14:17: warning: statement has no effect [-Wunused-value]
   14 | #define DE(...) 0
      |                 ^
semiexpress.cpp:35:3: note: in expansion of macro 'DE'
   35 |   DE(i, et);
      |   ^~
semiexpress.cpp:14:17: warning: statement has no effect [-Wunused-value]
   14 | #define DE(...) 0
      |                 ^
semiexpress.cpp:44:3: note: in expansion of macro 'DE'
   44 |   DE(s[i], ad, et);
      |   ^~
semiexpress.cpp:46:38: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   46 |   for (int u = 0; (ad > 0 || ad == 0 && id == s[i]) && id < s[i+1]; ++u) {
      |                              ~~~~~~~~^~~~~~~~~~~~~
semiexpress.cpp:14:17: warning: statement has no effect [-Wunused-value]
   14 | #define DE(...) 0
      |                 ^
semiexpress.cpp:48:4: note: in expansion of macro 'DE'
   48 |    DE(id, ex, et);
      |    ^~
semiexpress.cpp:14:17: warning: statement has no effect [-Wunused-value]
   14 | #define DE(...) 0
      |                 ^
semiexpress.cpp:58:5: note: in expansion of macro 'DE'
   58 |     DE(res, ad);
      |     ^~
semiexpress.cpp:14:17: warning: statement has no effect [-Wunused-value]
   14 | #define DE(...) 0
      |                 ^
semiexpress.cpp:69:2: note: in expansion of macro 'DE'
   69 |  DE(res);
      |  ^~
semiexpress.cpp:14:17: warning: statement has no effect [-Wunused-value]
   14 | #define DE(...) 0
      |                 ^
semiexpress.cpp:70:2: note: in expansion of macro 'DE'
   70 |  DE(ad);
      |  ^~
semiexpress.cpp:15:20: warning: statement has no effect [-Wunused-value]
   15 | #define debug(...) 0
      |                    ^
semiexpress.cpp:71:2: note: in expansion of macro 'debug'
   71 |  debug(AI(obj));
      |  ^~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 1 ms 364 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Correct 1 ms 364 KB Output is correct
6 Correct 1 ms 364 KB Output is correct
7 Correct 1 ms 384 KB Output is correct
8 Correct 1 ms 364 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 1 ms 364 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Correct 1 ms 364 KB Output is correct
6 Correct 1 ms 364 KB Output is correct
7 Correct 1 ms 384 KB Output is correct
8 Correct 1 ms 364 KB Output is correct
9 Correct 0 ms 364 KB Output is correct
10 Correct 0 ms 364 KB Output is correct
11 Correct 1 ms 364 KB Output is correct
12 Correct 1 ms 364 KB Output is correct
13 Correct 1 ms 364 KB Output is correct
14 Incorrect 1 ms 364 KB Output isn't correct
15 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 1 ms 364 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Correct 1 ms 364 KB Output is correct
6 Correct 1 ms 364 KB Output is correct
7 Correct 1 ms 384 KB Output is correct
8 Correct 1 ms 364 KB Output is correct
9 Correct 0 ms 364 KB Output is correct
10 Correct 0 ms 364 KB Output is correct
11 Correct 1 ms 364 KB Output is correct
12 Correct 1 ms 364 KB Output is correct
13 Correct 1 ms 364 KB Output is correct
14 Incorrect 1 ms 364 KB Output isn't correct
15 Halted 0 ms 0 KB -