Submission #170560

#TimeUsernameProblemLanguageResultExecution timeMemory
170560mdn2002Unija (COCI17_unija)C++14
80 / 100
1080 ms44532 KiB
#include<bits/stdc++.h> using namespace std; const long long mod=998244353; multiset<int>ms; int n,k; map<int,int>a; int v[1000006]; vector<int>b; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); //freopen("lemonade.in","r",stdin); //freopen("lemonade.out","w",stdout); cin>>n; for(int i=0;i<n;i++) { int x,y; cin>>x>>y; x/=2; y/=2; if(a[y+1]==0) { a[y+1]=++k; b.push_back(y+1); } if(v[a[y+1]]==0) { v[a[y+1]]=x; ms.insert(x); continue; } if(v[a[y+1]]<x) { ms.erase(ms.lower_bound(v[a[y+1]])); ms.insert(x); v[a[y+1]]=x; } } sort(b.begin(),b.end()); long long ans=0; for(int i=0;i<b.size();i++) { int z=b[i],z1; if(i>0)z1=b[i-1]; else z1=1; ans+=*--ms.end()*(z-z1); if(v[a[z]]!=0) { int x=v[a[z]]; ms.erase(ms.lower_bound(x)); } if(ms.size()==0)break; } cout<<ans*4; }

Compilation message (stderr)

unija.cpp: In function 'int main()':
unija.cpp:43:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<b.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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...