답안 #496937

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
496937 2021-12-22T07:17:08 Z abc864197532 DEL13 (info1cup18_del13) C++17
40 / 100
10 ms 2924 KB
#include <bits/stdc++.h>
using namespace std;
#define lli long long int
#define mp make_pair
#define eb emplace_back
#define pb push_back
#define X first
#define Y second
#define pii pair<int,int>
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
void abc() {cout << endl;}
template <typename T, typename ...U> void abc(T i, U ...j) {
	cout << i << ' ', abc(j...);
}
template <typename T> void printv(T l, T r) {
	for (; l != r; ++l) 
		cout << *l << " \n"[l + 1 == r];
}
#ifdef Doludu
#define test(x...) abc("[" + string(#x) + "]", x);
#else
#define test(x...) void(0);
#endif
const int N = 1001;
 
int main () {
	ios::sync_with_stdio(false);
	cin.tie(0);
	int t;
	cin >> t;
	while (t--) {
		int n, m;
		cin >> n >> m;
		vector <int> a(m + 1, 0);
		vector <int> rem;
		for (int i = 1; i <= m; ++i) {
			cin >> a[i];
			rem.pb(a[i] - a[i - 1] - 1);
		}
		rem.pb(n - a[m]);
		vector <int> move, fr;
		vector <vector <int>> dp(m + 1, vector <int>(3, false));
		dp[0][0] = true;
		for (int i = 0; i < m; ++i) for (int f = 0; f <= 2; ++f) if (dp[i][f]) {
			int left = rem[i] - f;
			assert(left >= 0);
			if (left == 0) {
				dp[i + 1][0] = true;
				continue;
			}
			if (left & 1) {
				// optimal 1
				if (rem[i + 1] >= 1)
					dp[i + 1][1] = true;
			} else {
				if (f) {
					dp[i + 1][0] = true;
				}
				if (rem[i + 1] >= 2)
					dp[i + 1][2] = true;
			}
		}
		bool is = false;
		for (int i = 1; i <= 2; ++i) 
			is |= dp[m][i] && rem[m] >= i && (rem[m] - i) % 2 == 0;
		is |= dp[m][0] && rem[m] == 0;
		if (is) {
			cout << 0 << endl;
			cout << endl;
		} else {
			cout << -1 << endl;
		}
	}
}
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 204 KB Output is partially correct
2 Correct 1 ms 204 KB Output is partially correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 204 KB Output is partially correct
2 Correct 1 ms 204 KB Output is partially correct
3 Correct 8 ms 204 KB Output is partially correct
4 Correct 9 ms 320 KB Output is partially correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 332 KB Output is partially correct
2 Correct 2 ms 460 KB Output is partially correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 204 KB Output is partially correct
2 Correct 1 ms 204 KB Output is partially correct
3 Correct 8 ms 204 KB Output is partially correct
4 Correct 9 ms 320 KB Output is partially correct
5 Correct 1 ms 204 KB Output is partially correct
6 Correct 1 ms 204 KB Output is partially correct
7 Correct 1 ms 204 KB Output is partially correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 204 KB Output is partially correct
2 Correct 1 ms 204 KB Output is partially correct
3 Correct 8 ms 204 KB Output is partially correct
4 Correct 9 ms 320 KB Output is partially correct
5 Correct 1 ms 204 KB Output is partially correct
6 Correct 1 ms 204 KB Output is partially correct
7 Correct 1 ms 204 KB Output is partially correct
8 Correct 10 ms 716 KB Output is partially correct
9 Correct 8 ms 1536 KB Output is partially correct
10 Correct 7 ms 1676 KB Output is partially correct
11 Correct 7 ms 2924 KB Output is partially correct