Submission #667162

#TimeUsernameProblemLanguageResultExecution timeMemory
667162PixelCatSails (IOI07_sails)C++14
100 / 100
54 ms6132 KiB
/* code by PixelCat */ /* meow owo */ #include <bits/stdc++.h> #define int LL //__int128 #define double long double using namespace std; using LL = long long; // using i128 = __int128_t; using ull = unsigned long long; using pii = pair<int, int>; #define For(i, a, b) for (int i = a; i <= b; i++) #define Fors(i, a, b, s) for (int i = a; i <= b; i += s) #define Forr(i, a, b) for (int i = a; i >= b; i--) #define F first #define S second #define eb emplace_back #define all(x) x.begin(), x.end() #define sz(x) ((int)x.size()) #define mkp make_pair #define MOD (int)(998244353) // #define MOD (int)((LL)1'000'000'007) #define INF (int)(4e18) #define EPS (1e-6) #ifdef NYAOWO #include "/home/pixelcat/yodayo/code/meow/library/debug.hpp" inline void USACO(const string &s) { cerr << "USACO: " << s << "\n"; } #else #define debug(...) inline void timer() {} inline void USACO(const string &s) { freopen((s + ".in").c_str(), "r", stdin); freopen((s + ".out").c_str(), "w", stdout); } #endif inline void NYA() { ios::sync_with_stdio(false); cin.tie(0); } inline int gcd(int a, int b) { return __gcd(a, b); } inline int lcm(int a, int b) { return a / gcd(a, b) * b; } int fpow(int b, int p, const int &mod = MOD) { int ans = 1; for (; p; p >>= 1, b = b * b % mod) if (p & 1) ans = ans * b % mod; return ans; } template <typename T> inline void chmin(T &_a, const T &_b) { if (_b < _a) _a = _b; } template <typename T> inline void chmax(T &_a, const T &_b) { if (_b > _a) _a = _b; } // mt19937_64 rng( // chrono::steady_clock::now().time_since_epoch().count()); int32_t main() { NYA(); // nyaacho >/////< // miku sama bless me >/////< int n; cin >> n; vector<pii> v(n); for(auto &i:v) cin >> i.F >> i.S; sort(all(v)); multiset<int> st; st.insert(0); for(auto &i:v) { int &h = i.F; int &k = i.S; st.insert(h); auto it = prev(st.lower_bound(h - k + 1)); int a = k - (h - (*next(it))) + (*it); st.erase(next(it)); st.erase(it); st.insert(a); if(*st.begin()) st.insert(0); // cout << st << "\n"; } int ans = 0; int now = 0, last = 0; for(auto it = st.rbegin(); it != st.rend(); it++) { ans += (now * (now - 1) / 2) * (last - (*it)); now++; last = (*it); } cout << ans << "\n"; 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...
#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...