Submission #462978

# Submission time Handle Problem Language Result Execution time Memory
462978 2021-08-11T02:15:49 Z Hamed5001 Vudu (COCI15_vudu) C++14
42 / 140
1000 ms 54600 KB
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

unordered_map<int, int> ID;
int id = 1;
const int mxN = 1e6+100;
int BIT[mxN];

void add(int idx, int delta) {
	for (; idx < id; idx += idx & -idx)
		BIT[idx] += delta;
}

int query(int idx) {
	int ret = 0;
	for (; idx > 0; idx -= idx & -idx)
		ret += BIT[idx];
	return ret;
}

void solve() {
	int N, P;
	cin >> N;
	vector<int> A(N); for (auto& a : A) cin >> a;
	cin >> P;
	for (auto& a : A) a-=P;

	vector<int> AA;

	int sum = 0;
	for (auto& a : A) {
		sum += a;
		AA.push_back(sum);
	}
	AA.push_back(0);

	sort(AA.rbegin(), AA.rend());

	for (int i = 0; i < AA.size(); ++i) {
		if (!ID[AA[i]]) 
			ID[AA[i]] = id++;
	}

	for (auto& aa : AA) {
		add(ID[aa], 1);
	}
	add(ID[0], -1);


	sum = 0;
	ll ans = 0;
	for (auto a : A) {
		ans += query(ID[sum]);
		sum += a;
		add(ID[sum], -1);
	}

	cout << ans;
}

int main() {

	ios_base::sync_with_stdio(false);
	cin.tie(0);
	solve();
}

Compilation message

vudu.cpp: In function 'void solve()':
vudu.cpp:41:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   41 |  for (int i = 0; i < AA.size(); ++i) {
      |                  ~~^~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 4 ms 716 KB Output is correct
2 Correct 5 ms 588 KB Output is correct
3 Correct 3 ms 460 KB Output is correct
4 Execution timed out 1094 ms 53228 KB Time limit exceeded
5 Incorrect 875 ms 29444 KB Output isn't correct
6 Execution timed out 1085 ms 48472 KB Time limit exceeded
7 Execution timed out 1093 ms 49908 KB Time limit exceeded
8 Execution timed out 1077 ms 45584 KB Time limit exceeded
9 Execution timed out 1074 ms 54600 KB Time limit exceeded
10 Execution timed out 1085 ms 48868 KB Time limit exceeded