Submission #526761

#TimeUsernameProblemLanguageResultExecution timeMemory
526761beepbeepsheepIzbori (COCI22_izbori)C++17
40 / 110
3042 ms6688 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define ii pair<ll,ll> #define endl '\n' const ll inf=1e15; const ll mod=1e9+7; const ll maxn=2e5+5; ll arr[maxn]; vector<ll> v; ll fen[2*maxn]; void upd(ll pos){ while (pos<2*maxn){ fen[pos]++; pos+=(pos&-pos); } } ll query(ll pos){ ll ans=0; while (pos){ ans+=fen[pos]; pos-=(pos&-pos); } return ans; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); ll n; cin>>n; for (int i=0;i<n;i++){ cin>>arr[i]; v.push_back(arr[i]); } sort(v.begin(),v.end()); vector<ll> newv; for (auto u:v){ if (newv.empty()) newv.push_back(u); else if (newv.back()!=u) newv.push_back(u); } for (int i=0;i<n;i++){ arr[i]=lower_bound(newv.begin(),newv.end(),arr[i])-newv.begin(); } ll ans=0; for (int i=0;i<newv.size();i++){ ll tot=0; memset(fen,0,sizeof(fen)); upd(2e5+1); for (int j=0;j<n;j++){ if (arr[j]==i){ tot++; }else{ tot--; } upd(tot+2e5+1); ans+=query(tot+2e5); } } cout<<ans; return 0; }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:47:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   47 |     for (int i=0;i<newv.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...