Submission #293918

#TimeUsernameProblemLanguageResultExecution timeMemory
293918sabamakuExercise Deadlines (CCO20_day1problem2)C++14
25 / 25
258 ms56472 KiB
#include<bits/stdc++.h> using namespace std; int n,d[2000005],p[2000005]; vector <int> mp[2000005]; priority_queue <int> q; int solve(int a){ int x = 0; for(int i = a; i > 0; i -= (i & -i)){ x += p[i]; } return x; } void update(int a){ for(int i = a + 1; i <= n; i += (i & -i)){ p[i]++; } } int a; int main(){ cin >> n; for(int i = 1; i <= n; i++){ cin >> d[i]; mp[d[i]].push_back(i); } sort(d + 1,d + n + 1); for(int i = 1; i <= n; i++){ if(d[i] < i){ cout << -1; return 0; } } long long ans = 0; for(int i = n; i >= 1; i--){ for(int j = 0; j < mp[i].size(); j++){ q.push(mp[i][j]); } a = q.top(); q.pop(); int x = solve(a); ans += i - (a - x); update(a); } cout << ans; }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:41:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   41 |         for(int j = 0; j < mp[i].size(); j++){
      |                        ~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...