Submission #872677

#TimeUsernameProblemLanguageResultExecution timeMemory
872677mertozelSure Bet (CEOI17_sure)C++11
0 / 100
0 ms500 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; void print(ll a) { if(a < 10) cout << "0.000" << a; else if(a < 100) cout << "0.00" << a; else if(a < 1000) cout << "0.0" << a; else if(a < 10000) cout << "0." << a; else cout << a/10000 << "." << a%10000; return; } int manipulateString(const std::string& input) { // Noktadan sonraki karakter sayısını bulma size_t dotIndex = input.find('.'); size_t decimalCount = (dotIndex != std::string::npos) ? input.size() - dotIndex - 1 : 0; // Nokta içeriyorsa noktayı sil std::string result = input; result.erase(std::remove(result.begin(), result.end(), '.'), result.end()); // Sonuna 4 - decimalCount kadar '0' ekleme result.append(4 - decimalCount, '0'); // Noktadan önce sadece 0 varsa sil if (result.find_first_not_of('0') == dotIndex) { result.erase(0, dotIndex); } // Elde edilen sonucu inte çevirme int finalResult = std::stoi(result); // Sonucu integer olarak döndürme return finalResult; } int main() { cout.precision(12); int n; cin >> n; vector<ll> v1(n), v2(n); for(int i = 0; i<n; i++) { string a, b; cin >> a >> b; v1[i] = manipulateString(a); v2[i] = manipulateString(b); } sort(v1.begin(), v1.end()); sort(v2.begin(), v2.end()); reverse(v1.begin(), v1.end()); reverse(v2.begin(), v2.end()); ll ptr1 = 0, ptr2 = 0; ll val1 = 0, val2 = 0, rem = 0; ll ans = 0; /* for(int i : v1) cout << i << " "; cout << "\n"; for(int i : v2) cout << i << " "; cout << "\n"; */ while(ptr1 <= n || ptr2 <= n) { if(val1 < val2) { val1 += v1[ptr1]; ptr1++; rem += 10000; } else{ val2+= v2[ptr2]; ptr2++; rem += 10000; } ans = max(ans, min(val1, val2) - rem); } print(ans); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...