Submission #1305081

#TimeUsernameProblemLanguageResultExecution timeMemory
1305081lsjoPinball (JOI14_pinball)C++20
11 / 100
1 ms572 KiB
#include <bits/stdc++.h> using namespace std; #define int long long int a[11],b[11],c[11],d[11]; signed main() { int m, n; cin >> m >> n; for (int i = 0; i < m; i++) { cin >> a[i] >> b[i] >> c[i] >> d[i]; } int maxnum=1<<m; int mincost=1e18; bool anypos=false; for (int j = 1; j < maxnum; j++) { int num=j; int last=-1; int mincov=1000000000; int maxcov=-1; int cost=0; bool pos=true; for (int i = m-1; i >= 0; i--) { if (num%2 != 0) { //cout << "including platform " << i << "\n"; if (last==-1) { last=c[i]; mincov=a[i]; maxcov=b[i]; cost+=d[i]; //cout << "last, final is " << c[i] << "\n"; } else { if (c[i] < mincov) { mincov=max(mincov, b[i]+1); } if (c[i] > maxcov) { maxcov=min(maxcov, a[i]-1); } if (mincov <= c[i] && c[i] <= maxcov) { mincov=min(mincov, a[i]); maxcov=max(maxcov, b[i]); //cout << "doesnt block, cov is now " << mincov << " " << maxcov << "\n"; } cost+=d[i]; if (mincov > maxcov) { pos=false; break; } } } num/=2; } //bool cover1 = (last==1) && (mincov==1 || mincov==2) && (maxcov==n); //bool cover2 = (last==n-1) && (mincov==1) && (maxcov==n || maxcov==1) if (pos && mincov==1 && maxcov==n) { anypos=true; mincost=min(mincost, cost); } } if (anypos) { cout << mincost << "\n"; } else { cout << -1 << "\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...