Submission #308740

#TimeUsernameProblemLanguageResultExecution timeMemory
308740NintsiChkhaidzeExercise Deadlines (CCO20_day1problem2)C++14
25 / 25
121 ms13432 KiB
#include <bits/stdc++.h> #define f first #define s second #define pb push_back #define left (node<<1),l,((l+r)>>1) #define right ((node<<1)|1),((l+r)>>1) + 1,r #define N 200001 #define ll long long using namespace std; priority_queue <int> q; int fen[200005]; vector <int> v[200005]; void upd(int in,int val){ while (in < N){ fen[in]+=val; in += (in&(-in)); } } int get(int in){ int sum=0; while (in > 0){ sum+=fen[in]; in -= (in&(-in)); } return sum; } int main(){ int n; scanf("%d",&n); for (int i=1;i<=n;i++){ int a; scanf("%d",&a); v[a].pb(i); } int ind = n; ll ans = 0; while (ind > 0){ for (int i = 0; i < v[ind].size(); i++) q.push(v[ind][i]); if (q.size() == 0) {ans=-1; break;} int x = q.top() - get(q.top()); ans+=ind - x; upd(q.top(),1); q.pop(); ind--; } printf("%lld",ans); }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:40:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |         for (int i = 0; i < v[ind].size(); i++)
      |                         ~~^~~~~~~~~~~~~~~
Main.cpp:29:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   29 |     scanf("%d",&n);
      |     ~~~~~^~~~~~~~~
Main.cpp:33:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   33 |         scanf("%d",&a);
      |         ~~~~~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...