제출 #36447

#제출 시각아이디문제언어결과실행 시간메모리
36447szawinisMoney (IZhO17_money)C++14
45 / 100
1500 ms56960 KiB
#include <bits/stdc++.h>
using namespace std;
const int MAX = (1e6)+1;

int n, ans, a[MAX];
vector<pair<int,int> > segs;
set<int> st;
int main() {
	scanf("%d",&n);
	int curr = 0;
	for(int i = 0; i < n; i++) {
		scanf("%d",a+i);
		if(i && a[i] < a[i-1]) {
			segs.emplace_back(curr, i-1);
			curr = i;
		}
	}
	segs.emplace_back(curr, n-1);
	for(auto p: segs) {
		int l, r; tie(l, r) = p;
		int mn = a[l], mx = a[l];
		curr = l;
		for(int i = l; i <= r; i++) {
			mn = min(a[i], mn);
			mx = max(a[i], mx);
			auto itlf = st.upper_bound(mn);
			auto itrg = st.lower_bound(mx);
			if(mn != mx && itlf != itrg) {
				for(int j = curr; j < i; j++) st.insert(a[j]);
				++ans;
				mn = a[i];
				mx = a[i];
				curr = i;
			}
		}
		for(int j = curr; j <= r; j++) st.insert(a[j]);
		++ans;
	}
	printf("%d", ans);
}

컴파일 시 표준 에러 (stderr) 메시지

money.cpp: In function 'int main()':
money.cpp:9:16: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d",&n);
                ^
money.cpp:12:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d",a+i);
                  ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...