Submission #119441

#TimeUsernameProblemLanguageResultExecution timeMemory
119441Charis02Palembang Bridges (APIO15_bridge)C++14
0 / 100
4 ms512 KiB
#include<iostream> #include<stdio.h> #include<vector> #include<cmath> #include<queue> #include<utility> #include<string.h> #include<map> #include<set> #include<algorithm> #define ll long long #define pi pair < ll,ll > #define mp(a,b) make_pair(a,b) #define rep(i,a,b) for(int i = a;i < b;i++) #define N 300004 #define INF 1e13 using namespace std; ll n,k; pi ar[N]; ll b,d; char a,c; ll ans,cnt; map < ll,ll > telionei; map < ll,ll > arxizei; vector < vector < ll > > goes; ll checkbridge(ll x) { ll bridge = x; ll res = ans; rep(j,0,cnt) { if(ar[j].first <= bridge && bridge <= ar[j].second) continue; else if(bridge < ar[j].first) res += 2*(ar[j].first - bridge); else res += 2*(bridge-ar[j].second); } return res; } int main() { ios_base::sync_with_stdio(false); cin >> k >> n; rep(i,0,n) { cin >> a >> b >> c >> d; if(d < b) swap(b,d); ans += d-b; if(a != c) { ar[cnt].first = b; arxizei[b]++; ar[cnt].second = d; telionei[d]++; ans++; cnt++; } } // cout << "here\n"; sort(ar,ar+cnt); set < ll > p; rep(i,0,cnt) { p.insert(ar[i].first); p.insert(ar[i].second); } vector < ll > possible; for(auto it = p.begin();it != p.end();it++) { possible.push_back(*it); } ll fin = INF; ll aristera = 0; ll bridge = possible[0]; ll res = ans; ll deksia = 0; rep(i,0,cnt) { if(ar[i].first <= bridge && bridge <= ar[i].second) continue; else if(bridge < ar[i].first) { deksia++; res += 2*(ar[i].first - bridge); } else { aristera++; res += 2*(bridge-ar[i].second); } } fin = res; // cout << res << endl; rep(i,1,possible.size()) { res += 2*aristera*(possible[i] - possible[i-1]); res -= 2*deksia*(possible[i] - possible[i-1]); // cout << bridge << " " << res << " " << deksia << " " << aristera << endl; bridge = possible[i]; aristera += telionei[bridge]; deksia -= arxizei[bridge]; fin = min(fin,res); } if(cnt == 0) fin = ans; cout << fin; return 0; } /* 1 5 B 0 A 4 B 1 B 3 A 5 B 7 B 2 A 6 B 1 A 7 */

Compilation message (stderr)

bridge.cpp: In function 'int main()':
bridge.cpp:14:36: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
 #define rep(i,a,b) for(int i = a;i < b;i++)
bridge.cpp:114:9:
     rep(i,1,possible.size())
         ~~~~~~~~~~~~~~~~~~~         
bridge.cpp:114:5: note: in expansion of macro 'rep'
     rep(i,1,possible.size())
     ^~~
#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...