Submission #1054705

#TimeUsernameProblemLanguageResultExecution timeMemory
1054705KebabuVaikis15Palembang Bridges (APIO15_bridge)C++14
22 / 100
67 ms9152 KiB
#include <bits/stdc++.h> using namespace std; const int MAXN=100000; long long k, n, pradSuma=0, suma=0; char a[MAXN], b[MAXN]; long long x[MAXN], y[MAXN]; vector<tuple<long long, long long, long long>> keliai; long long dPtr=0; long long dKairej=0, dDesinej; void tinkintDesine(long long id1, long long id2) { while (dKairej<dDesinej) { long long pradPos=get<0>(keliai[dPtr]); dPtr++; suma-=2ll*(get<0>(keliai[dPtr])-pradPos)*(dDesinej-dKairej); if (get<1>(keliai[dPtr])==0) dDesinej--; else dKairej++; } } int main() { cin>>k>>n; for (int i=0; i<n; i++) { cin>>a[i]>>x[i]>>b[i]>>y[i]; if (x[i]>y[i]) swap(x[i], y[i]); pradSuma+=y[i]-x[i]; if (a[i]!=b[i]) { pradSuma++; keliai.push_back(make_tuple(x[i], 0, i)); keliai.push_back(make_tuple(y[i], 1, i)); } } keliai.push_back(make_tuple(0, 0, 0)); sort(keliai.begin(), keliai.end()); for (int i=0; i<n; i++) if (a[i]!=b[i]) suma+=2ll*x[i]; dDesinej=keliai.size()/2; tinkintDesine(-1, -1); if (k==1) { cout<<pradSuma+suma<<endl; return 0; } }
#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...