Submission #429550

#TimeUsernameProblemLanguageResultExecution timeMemory
429550jamezzzSparklers (JOI17_sparklers)C++17
100 / 100
36 ms2532 KiB
#include <bits/stdc++.h> using namespace std; #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; #include <ext/rope> using namespace __gnu_cxx; typedef tree<long long, null_type, less<long long>, rb_tree_tag, tree_order_statistics_node_update> pbds; //less_equal for identical elements #define DEBUG #ifdef DEBUG #define debug(...) printf(__VA_ARGS__); #else #define debug(...) #endif #define sf scanf #define pf printf #define fi first #define se second #define pb emplace_back #define sz(x) (int)x.size() #define mnto(x,y) x=min(x,(__typeof__(x))y) #define mxto(x,y) x=max(x,(__typeof__(x))y) #define INF 1023456789 #define LINF 1023456789123456789 #define all(x) x.begin(), x.end() typedef long long ll; typedef long double ld; typedef pair<int, int> ii; typedef pair<ll, ll> pll; typedef tuple<int, int, int> iii; typedef tuple<int, int, int, int> iiii; typedef vector<int> vi; typedef vector<ii> vii; typedef vector<pll> vll; mt19937 rng(time(0)); #define maxn 100005 int n,k,t,x[maxn]; ll a[maxn]; bool check(int s){ for(int i=0;i<n;++i)a[i]=(ll)2*s*t*i-x[i]; int ml=min_element(a,a+k)-a; int mr=max_element(a+k-1,a+n)-a; int l=k-1,r=k-1; ll cl=a[l],cr=a[r]; while(l>ml||r<mr){ //try expanding outwards bool move=false; while(l>ml&&a[l-1]<=cr)cl=min(cl,a[--l]),move=true; while(r<mr&&cl<=a[r+1])cr=max(cr,a[++r]),move=true; if(!move)return false; } l=0,r=n-1; cl=a[l],cr=a[r]; if(cl>cr)return false; while(l<ml||r>mr){ bool move=false; while(l<ml&&a[l+1]<=cr)cl=min(cl,a[++l]),move=true; while(r>mr&&cl<=a[r+1])cr=max(cr,a[--r]),move=true; if(!move)return false; } return true; } int main(){ sf("%d%d%d",&n,&k,&t); for(int i=0;i<n;++i)sf("%d",&x[i]); int lo=0,hi=1e9/t,mid,res; while(lo<=hi){ mid=(lo+hi)/2; if(check(mid)){ res=mid;hi=mid-1; } else lo=mid+1; } pf("%d\n",res); }

Compilation message (stderr)

sparklers.cpp: In function 'int main()':
sparklers.cpp:72:4: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   72 |  sf("%d%d%d",&n,&k,&t);
      |    ^
sparklers.cpp:73:24: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   73 |  for(int i=0;i<n;++i)sf("%d",&x[i]);
      |                        ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...