Submission #1273555

#TimeUsernameProblemLanguageResultExecution timeMemory
1273555KindaGoodGamesThe short shank; Redemption (BOI21_prison)C++20
35 / 100
2097 ms108448 KiB
#pragma GCC optimize("O3, unroll-loops, Ofast") #include<bits/stdc++.h> using namespace std; vector<int> arr; int C[4000][4000]; int dp[4000][4000]; int n,d,t; int INF = numeric_limits<int>::max()/2; int cost(int l, int r){ int time = INF; int cnt = 0; for(int i = l; i <= r; i++){ time = min(time+1, arr[i]); if(time <= t){ cnt++; } } return cnt; } void calc(int k, int l, int r, int optl, int optr){ if(l >= r) return; int mid = (l+r)/2; int opt = -1; if(mid == 3){ cerr<<""; } for(int j = optl; j <= min(optr,mid); j++){ if(dp[k][mid] > dp[k-1][j-1] + C[j][mid]){ opt = j; dp[k][mid] = dp[k-1][j-1] + C[j][mid]; } } calc(k,l,mid,optl,opt); calc(k,mid+1,r,opt,optr); } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cin >> n >> d >> t; arr.resize(n); for(int i = 0; i < n; i++){ cin >> arr[i]; } // C.resize(n, vector<int>(n)); for(int i = 0; i < n; i++){ int time = INF; int cnt = 0; for(int j = i; j < n; j++){ time = min(time+1, arr[j]); if(time <= t){ cnt++; } C[i][j] = cnt; } } // d pillows, [0;i] // dp.resize(d+1, vector<int>(n, INF)); for(int i = 0; i < 4000; i++){ for(int j = 0; j < 4000; j++){ dp[i][j] = INF; } } for(int i = 0; i < n; i++){ dp[0][i] = C[0][i]; } for(int i = 1; i <= d; i++){ calc(i,0,n,0,n); } cout << dp[d][n-1] << endl; }

Compilation message (stderr)

prison.cpp:1:47: warning: bad option '-f unroll-loops' to pragma 'optimize' [-Wpragmas]
    1 | #pragma GCC optimize("O3, unroll-loops, Ofast")
      |                                               ^
prison.cpp:1:47: warning: bad option '-f Ofast' to pragma 'optimize' [-Wpragmas]
prison.cpp:13:22: warning: bad option '-f unroll-loops' to attribute 'optimize' [-Wattributes]
   13 | int cost(int l, int r){
      |                      ^
prison.cpp:13:22: warning: bad option '-f Ofast' to attribute 'optimize' [-Wattributes]
prison.cpp:26:50: warning: bad option '-f unroll-loops' to attribute 'optimize' [-Wattributes]
   26 | void calc(int k, int l, int r, int optl, int optr){
      |                                                  ^
prison.cpp:26:50: warning: bad option '-f Ofast' to attribute 'optimize' [-Wattributes]
prison.cpp:43:10: warning: bad option '-f unroll-loops' to attribute 'optimize' [-Wattributes]
   43 | int main(){
      |          ^
prison.cpp:43:10: warning: bad option '-f Ofast' to attribute 'optimize' [-Wattributes]
#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...