Submission #960005

#TimeUsernameProblemLanguageResultExecution timeMemory
960005LCJLYPinball (JOI14_pinball)C++14
0 / 100
260 ms524288 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define ld long double #define show(x,y) cout << y << " " << #x << endl; #define show2(x,y,i,j) cout << y << " " << #x << " " << j << " " << #i << endl; #define show3(x,y,i,j,p,q) cout << y << " " << #x << " " << j << " " << #i << " " << q << " " << #p << endl; #define show4(x,y) for(auto it:y) cout << it << " "; cout << #x << endl; typedef pair<long long,int>pii; //typedef pair<pii,pii>pi2; typedef array<int,3>pi2; mt19937 rng(chrono::system_clock::now().time_since_epoch().count()); int n,m; array<int,4>arr[1005]; //l r to cost int memo[205][605][605]; int sz; int dp(int index, int l, int r){ if(index==-1){ if(l<=1&&r>=sz){ return 0; } else{ return 1e15; } } if(memo[index][l][r]!=-1) return memo[index][l][r]; int ans=1e15; if(arr[index][2]>=l&&arr[index][2]<=r){ ans=min(ans,dp(index-1,min(l,arr[index][0]),max(r,arr[index][1]))+arr[index][3]); } if(r<l){ ans=min(ans,dp(index-1,arr[index][0],arr[index][1])+arr[index][3]); } ans=min(ans,dp(index-1,l,r)); //show3(index,index,l,l,r,r); return memo[index][l][r]=ans; } void solve(){ cin >> n >> m; vector<int>v; for(int x=0;x<n;x++){ cin >> arr[x][0] >> arr[x][1] >> arr[x][2] >> arr[x][3]; v.push_back(arr[x][0]); v.push_back(arr[x][1]); v.push_back(arr[x][2]); } v.push_back(1); v.push_back(m); sort(v.begin(),v.end()); v.resize(unique(v.begin(),v.end())-v.begin()); for(int x=0;x<n;x++){ arr[x][0]=lower_bound(v.begin(),v.end(),arr[x][0])-v.begin()+1; arr[x][1]=lower_bound(v.begin(),v.end(),arr[x][1])-v.begin()+1; arr[x][2]=lower_bound(v.begin(),v.end(),arr[x][2])-v.begin()+1; } sz=lower_bound(v.begin(),v.end(),m)-v.begin()+1; memset(memo,-1,sizeof(memo)); int hold=dp(n-1,1,0); if(hold>=1e15){ cout << -1; } else cout << hold; } int32_t main(){ ios::sync_with_stdio(0); cin.tie(0); int t=1; //cin >> t; while(t--){ solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...