Submission #395805

#TimeUsernameProblemLanguageResultExecution timeMemory
395805Pichon5Global Warming (CEOI18_glo)C++17
28 / 100
2077 ms2016 KiB
#include<bits/stdc++.h> #include <chrono> #include <thread> #define lcm(a,b) (a/__gcd(a,b))*b #define fast ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); #define ll long long int #define vi vector<int> #define vll vector<ll> #define pb push_back #define F first #define S second #define mp make_pair //salida rapida "\n" //DECIMALES fixed<<sp(n)<<x<<endl; //gcd(a,b)= ax + by //lCB x&-x //set.erase(it) - ersases the element present at the required index//auto it = s.find(element) //set.find(element) - iterator pointing to the given element if it is present else return pointer pointing to set.end() //set.lower_bound(element) - iterator pointing to element greater than or equal to the given element //set.upper_bound(element) - iterator pointing to element greater than the given element // | ^ //__builtin_popcount(x) using namespace std; const ll inf=1e10; const int ma=1e5; ll a[ma+5]; vll d; int main() { fast int n,k; cin>>n>>k; for(int i=0;i<n;i++){ cin>>a[i]; } int res=0; for(int j=n;j>=0;j--){ a[j]+=k; d.assign(n+1,inf); d[0]=-inf; for(int i=0;i<n;i++){ int b=1,e=n; while(b<=e){ int mid=(b+e)/2; if(a[i]<d[mid] && a[i]>d[mid-1]){ d[mid]=a[i]; break; } if(d[mid]>a[i]){ e=mid-1; }else{ b=mid+1; } } for(int i=1;i<=n;i++){ if(d[i]!=inf){ res=max(res,i); } } } } cout<<res<<endl; return 0; } //409336628
#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...