답안 #35195

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
35195 2017-11-18T16:25:53 Z ulna Money (IZhO17_money) C++11
0 / 100
0 ms 9828 KB
#include <bits/stdc++.h>
using namespace std;
 
// why am I so weak
 
int n;
int a[1000055];
int dat[1000055];

inline void read(int &x) {
	x = 0;
	char ch = 0;
 
	while (ch < '0' || ch > '9') ch = getchar();
 
	while (ch >= '0' && ch <= '9') {
		x = x * 10 + (ch - '0');
		ch = getchar();
	}
}
void add(int id) {
	while (id <= (int)1e6) {
		dat[id]++;
		id += id & -id;
	}
}
int get(int id) {
	int res = 0;

	while (id > 0) {
		res += dat[id];
		id -= id & -id;
	}

	return res;
}
int main() {
	scanf("%d", &n);
 
	for (int i = 0; i < n; i++) {
		read(a[i]);
	}
 
	int res = 1;
	vector<int> buf;

	buf.push_back(a[0]);
 
	for (int i = 0; i + 1 < n; i++) {
		if (a[i + 1] < a[i]) {
			res++;
			
			for (auto u : buf) add(u);
			buf.clear();

			buf.push_back(a[i + 1]);
			
			continue;
		}

		if (a[i + 1] == a[i]) continue;

		if (get(a[i + 1] - 1) - get(a[i] - 1) > 0) {
			res++;
			
			for (auto u : buf) add(u);
			buf.clear();

			buf.push_back(a[i + 1]);
		}
	}
 
	printf("%d\n", res);
 
	return 0;
}

Compilation message

money.cpp: In function 'int main()':
money.cpp:38:17: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d", &n);
                 ^
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 9828 KB Output is correct
2 Incorrect 0 ms 9828 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 9828 KB Output is correct
2 Incorrect 0 ms 9828 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 9828 KB Output is correct
2 Incorrect 0 ms 9828 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 9828 KB Output is correct
2 Incorrect 0 ms 9828 KB Output isn't correct
3 Halted 0 ms 0 KB -