Submission #328587

#TimeUsernameProblemLanguageResultExecution timeMemory
328587wind_reaperLightning Rod (NOI18_lightningrod)C++17
4 / 100
511 ms116060 KiB
// #define _GLIBCXX_DEBUG // #pragma GCC optimize "trapv" #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #include <chrono> #include <stdio.h> #include <cstdlib> #pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,tune=native") using namespace std; using namespace __gnu_pbds; using namespace chrono; #define pb push_back #define f first #define s second #define min3(a, b, c) min(min(a, b), c) #define max3(a, b, c) max(max(a, b), c) #define all(v) v.begin(), v.end() typedef long long ll; typedef double ld; typedef long double lld; typedef unsigned long long ull; typedef pair<int, int> pii; typedef pair<ll, ll> pll; typedef vector<int> vi; typedef vector<vi> vvi; typedef vector<ll> vl; typedef vector<vl> vvl; typedef vector<pii> vpi; typedef vector<pll> vpl; template <class T> using ordered_set = tree <T, null_type, less <T>, rb_tree_tag, tree_order_statistics_node_update>; // const int INF = 1e9; const ll INF = LLONG_MAX; const ll mod = 1000000007; // const ll mod = 998244353; int BUF=100000; int buf_readed; int buf_index; char buffer[100000]; void my_init(){ buf_index=buf_readed=0; } /*****************************************/ char my_getchar(){ char x; if(buf_index==buf_readed){ buf_index=0; buf_readed=fread(buffer,1,BUF,stdin); } x=buffer[buf_index]; buf_index++; return x; } /*************************************/ int getInt(){ int r=0; char c; int sign=1; while(1){ c=my_getchar(); if(c=='-') sign=-1; if((c>='0' && c<='9')){ r=(c-'0'); break; } } while(1){ c=my_getchar(); if(!(c>='0' && c<='9')) break; r=r*10+(c-'0'); } return sign*r; } vpi a; inline bool covers(int i, int j){ if(abs(a[i].f - a[j].f) <= a[i].s - a[j].s) return true; return false; } void solve(int tc){ int n; cin >> n; a.resize(n); for(int i = 0; i < n; i++){ a[i].f = getInt(); a[i].s = getInt(); } stack<int> r; r.push(0); for(int i = 1; i < n; i++){ if(covers(r.top(), i)) continue; while(!r.empty() && covers(i, r.top())) r.pop(); r.push(i); } cout << r.size() << '\n'; } int main(){ ios_base::sync_with_stdio(NULL); cin.tie(NULL); #ifdef LOCAL auto begin = high_resolution_clock::now(); #endif my_init(); int tc = 1; // cin >> tc; for (int t = 0; t < tc; t++) solve(t); #ifdef LOCAL auto end = high_resolution_clock::now(); cout << fixed << setprecision(4) << "Execution Time: " << duration_cast<duration<double>>(end - begin).count() << "seconds" << endl; #endif 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...