Submission #1176713

#TimeUsernameProblemLanguageResultExecution timeMemory
1176713ASN49KSparklers (JOI17_sparklers)C++20
50 / 100
71 ms16276 KiB
#include <bits/stdc++.h> #define all(x) x.begin(),x.end() const int inf=1e9; using i64 = long long; const i64 INF=1e18; #define int long long const int N_MAX=1000; int a[N_MAX],n,k,t; int min[N_MAX][N_MAX],max[N_MAX][N_MAX]; bool test(int s) { for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { min[i][j]=INF; max[i][j]=-INF; } } min[k][k]=max[k][k]=a[k]; for(int l=n-1;l>=0;l--) { for(int r=l+1;r<n;r++) { min[l][r]=INF; max[l][r]=-INF; if(min[l][r-1]!=INF) { min[l][r]=std::min(min[l][r] , std::max(min[l][r-1]-s*t , a[r]-(r-l)*s*t)); max[l][r]=std::max(max[l][r] , std::min(max[l][r-1]+s*t , a[r]+(r-l)*s*t)); } if(min[l+1][r]!=INF) { min[l][r]=std::min(min[l][r] , std::max(min[l+1][r]-s*t , a[l]-(r-l)*s*t)); max[l][r]=std::max(max[l][r] , std::min(max[l+1][r]+s*t , a[l]+(r-l)*s*t)); } if(min[l][r]>max[l][r]) { min[l][r]=INF; max[l][r]=-INF; } } } //std::cout<<min[1][2]<<' '<<max[1][2]<<'\n'; return min[0][n-1]!=INF; } main() { std::cin>>n>>k>>t; k--; for(int i=0;i<n;i++) { std::cin>>a[i]; } //std::cout<<test(1); //return 0; int st=0,dr=a[n-1],rez=-1; while(st<=dr) { int mid=(st+dr)/2; if(test(mid)) { dr=mid-1; rez=mid; } else { st=mid+1; } } assert(rez!=-1); std::cout<<rez; return 0; } /* 2 1 10 200 300 */

Compilation message (stderr)

sparklers.cpp:51:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   51 | main()
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...