Submission #952981

#TimeUsernameProblemLanguageResultExecution timeMemory
952981SacharlemagneDiversity (CEOI21_diversity)C++17
64 / 100
7047 ms39332 KiB
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
ll cost(vector<int> v) {
		ll ans = 0;
		map<ll,ll> last;
		for (ll i = 0; i<v.size(); ++i) {
			int bef = last[v[i]];
			ans += (i-bef+1)*(v.size()-i);
			last[v[i]] = i+1;
		}

	return ans;
}
int main() {
	/*vector<int> v = {1,2,2,3,3,3,5,5,5,6,6,4};
	cout << cost(v);*/

	//ios_base::sync_with_stdio(false); cin.tie(nullptr);
	int n,q; cin >> n >> q;
	vector<int> vv(n); for (int i = 0; i<n; ++i) cin >> vv[i];
	while (q--) {
		int L, R;
		cin >> L >> R;
		--L; --R;
		vector<int> vvv(R-L+1); for (int i = 0; i<R-L+1; ++i) vvv[i] = vv[i+L];
		map<ll,ll> m; for (int &i : vvv) ++m[i];
		vector<int> a; for (auto p : m) a.push_back(p.second);
		sort(a.begin(), a.end());
		vector<int> v(R-L+1); ll l = 0, r = R-L;
		for (int i = 0; i<a.size(); ++i) {
			if (i%2) {
				for (int L = 0; L<a[i]; ++L) v[l+L] = i;
				l += a[i];
			}
			else {
				for (int R = 0; R<a[i]; ++R) v[r-R] = i;
				r -= a[i];
			}
		}
		ll fin = cost(v);
		cout << fin << '\n';
	}
	return 0;
}
/*
 1 2 2 3 3 3 5 5 5 6 6 4
 */

Compilation message (stderr)

diversity.cpp: In function 'll cost(std::vector<int>)':
diversity.cpp:8:19: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    8 |   for (ll i = 0; i<v.size(); ++i) {
      |                  ~^~~~~~~~~
diversity.cpp: In function 'int main()':
diversity.cpp:32:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   32 |   for (int i = 0; i<a.size(); ++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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...