제출 #1330262

#제출 시각아이디문제언어결과실행 시간메모리
1330262anudari_tInfinite Race (EGOI24_infiniterace2)C++20
100 / 100
261 ms23896 KiB
#include <bits/stdc++.h>
#define ff first
#define ss second
#define rep(i, n) for (int i = 0; i < n; i++)
#define rep1(i, n) for (int i = 1; i <= n; i++)

using namespace std;

int main () {
	int n, m;
	cin >> n >> m;
	map<int, vector<int>> mp;
	vector<pair<int, bool>> a(m);
	// 0 surug 1 eireg
	rep(i, m) {
		int v;
		cin >> v;
		if (v < 0) {
			a[i] = make_pair(v * -1, 0);
			mp[v * -1].push_back(i);
		}
		else {
			a[i] = make_pair(v, 1);
			mp[v].push_back(i);
		}
	}

	int cnt = 1;
	for(auto i : mp) {
		for (auto j : i.ss) {
			a[j].ff = cnt;
		}
		cnt++;
	}
	n = cnt;
	// rep(i, m) {
	// 	cout << a[i] << " ";
	// }
	int ans = 0;
	vector<bool> vis(n, true), cur(n, false);
	rep(j, m) {
		int i = a[j].ff;
		if (!a[j].ss) {
			vis[i] = true;
			continue;
		}
		if (vis[i] == true) {
			vis[i] = false;
			cur[i] = true;
			// cout << cur[i];
			// cout << i;
		}
		else {
			if (cur[i] == true) {
				ans++;
				cur = vector<bool> (n, false);
			}
			cur[i] = true;
		}
	}
	cout << ans << endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...