답안 #523873

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
523873 2022-02-08T10:23:02 Z Bill_00 Money (IZhO17_money) C++14
0 / 100
1 ms 332 KB
#include <bits/stdc++.h>
#define MOD 1000000007
typedef long long ll;
using namespace std;
int a[1000005],b[1000005],pre[1000005],nex[1000005],cnt[1000005];
int main() {
	ios_base::sync_with_stdio(NULL);
	cin.tie(NULL);
	cout.tie(NULL);
	int n;
	cin >> n;
	for(int i = 1; i <= n; i++){
		cin >> a[i];
		cnt[a[i]]++;
		b[i] = a[i];
	}
 
	sort(b + 1, b + n + 1);
	for(int i = 2; i <= n; i++){
		if(b[i] != b[i-1]){
			pre[b[i]]=b[i-1];
		}
	}
	for(int i = 1; i < n; i++){
		if(b[i] != b[i+1]){
			nex[b[i]] = b[i+1];
		}
	}
	int e, i = n, ans = 0, d;
	for(; i >= 1; i -= 0){
		d = 0, e = 0;
		while(d == 0 || (e == 0 && cnt[a[i + 1]] == 0 && pre[a[i + 1]] == a[i]) || a[i + 1] == a[i]){
			// cout << pre[a[i+1]] << ' ' << a[i] << ' ' << i << '\n';
			if(i == 0) break;
			if(d){
				if(a[i + 1] > a[i]) e++;
			}
			d++;
			cnt[a[i]]--;
			if(cnt[a[i]] == 0){
				pre[nex[a[i]]] = pre[a[i]];
				nex[pre[a[i]]] = nex[a[i]];
			}
			i--;
		}
		// cout << i << '\n';
		ans++;
	}
	cout << ans;
 
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 332 KB Output is correct
2 Incorrect 1 ms 316 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 332 KB Output is correct
2 Incorrect 1 ms 316 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 332 KB Output is correct
2 Incorrect 1 ms 316 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 332 KB Output is correct
2 Incorrect 1 ms 316 KB Output isn't correct
3 Halted 0 ms 0 KB -