Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
#include
#include
#include
using namespace std; struct kandelabra { int pos, cost, rad; }; int M, K; int n; kandelabra v[105]; int dp[101][10005]; bool visited[101][10001]; int rec(int at, int k) { if(at < 0) { return 0; } if(k < 0) { return 0; } if(dp[at][k] != -1) { return dp[at][k]; } int result1 = 0, result2 = 0, result = 0; if(k - v[at].cost >= 0) { int tmp = 0; if(v[at].pos + v[at].rad <= M) { tmp += v[at].rad; } else { tmp += M - v[at].pos; } if(v[at].pos - v[at].rad >= 0) { tmp += v[at].rad; } else { tmp += v[at].pos; } result1 = rec(at - 1, k - v[at].cost) + tmp; } result2 = rec(at - 1, k); if(result1 > result2) { visited[at][k] = true; } result = max(result1, result2); return dp[at][k] = result; } int upaleni_kandelabri[100001]; int main() { memset(dp, -1, sizeof dp); memset(visited, false, sizeof visited); memset(upaleni_kandelabri, 0, sizeof upaleni_kandelabri); cin >> M >> K; cin >> n; for(int i = 0; i < n; i++) { cin >> v[i].pos >> v[i].cost >> v[i].rad; } cout << rec(n - 1, K) << " "; for(int i = n - 1; i >= 0; i--) { if(K >= 0) { if(visited[i][K]) { for(int j = max(0, v[i].pos - v[i].rad); j <= min(M - 1, v[i].pos + v[i].rad - 1); j++) { upaleni_kandelabri[j] = 1; } K -= v[i].cost; } } } upaleni_kandelabri[0] = 1; int result = 0; for(int i = 1; i < M; i++) { if(upaleni_kandelabri[i] == 0) { upaleni_kandelabri[i] = upaleni_kandelabri[i - 1] + 1; result = max(result, upaleni_kandelabri[i]); } else { upaleni_kandelabri[i] = 0; } result = max(result, upaleni_kandelabri[i]); } cout << result << endl; return 0; }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)