harvey_wzy's blog

By harvey_wzy, history, 2 years ago, In English

Problem: ABC188E

#include <bits/stdc++.h>
using namespace std;

int a[200005], f[200005];
vector<int> pre[200005];

int main() {
	int n, m;
	scanf("%d %d", &n, &m);
	for (int i = 0; i < n; i++) {
		scanf("%d", &a[i]);
	}
	for (int i = 0; i < m; i++) {
		int x, y;
		scanf("%d %d", &x, &y);
		x--, y--;
		pre[y].push_back(x);
	}
	memset(f, 0x3f, sizeof f);
	int ans = -0x3f3f3f3f;
	for (int i = 0; i < n; i++) {
		for (int j : pre[i]) {
			f[i] = min(f[i], f[j]);
			f[i] = min(f[i], a[j]);
		}
		ans = max(ans, a[i] - f[i]);
	}
	printf("%d", ans);
	return 0;
}

I had increase the "infinity" in array f, and I found that when f[i] = 0x3f3f3f3f + 0x3f3f2f2f, it passed , when f[i] = 0x3f3f3f3f + 0x2f2f2f2f, it WA on test #6. I had no idea about it. Could anyone give a test to hack it?

  • Vote: I like it
  • +2
  • Vote: I do not like it