/*
Author of all code: Pedro BIGMAN Dias
Last edit: 15/02/2021
*/
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <string>
#include <map>
#include <unordered_map>
#include <set>
#include <unordered_set>
#include <queue>
#include <deque>
#include <list>
#include <iomanip>
#include <stdlib.h>
#include <time.h>
#include <cstring>
using namespace std;
typedef long long int ll;
typedef unsigned long long int ull;
typedef long double ld;
#define REP(i,a,b) for(ll i=(ll) a; i<(ll) b; i++)
#define pb push_back
#define mp make_pair
#define pl pair<ll,ll>
#define ff first
#define ss second
#define whole(x) x.begin(),x.end()
#define DEBUG(i) cout<<"Pedro Is The Master "<<i<<endl
#define INF 2000000000000000000LL
#define EPS 0.00000001
#define pi 3.14159
ll mod=1000000007LL;
template<class A=ll>
void Out(vector<A> a) {REP(i,0,a.size()) {cout<<a[i]<<" ";} cout<<endl;}
template<class A=ll>
void In(vector<A> &a, ll N) {A cur; REP(i,0,N) {cin>>cur; a.pb(cur);}}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
ll N,Q; cin>>N>>Q;
ll L = 10LL; ll T = 12LL;
vector<ll> dp; REP(i,0,L) {dp.pb(0LL);}
vector<ll> newdp; REP(i,0,L) {newdp.pb(0LL);}
vector<vector<ll> > olddp; olddp.pb(dp);
vector<pl> pro; REP(i,0,L) {pro.pb({0LL,0LL});}
vector<ll> loc; REP(i,0,N) {loc.pb(-1LL);}
vector<ll> A,B,st,C; REP(i,0,N) {A.pb(-1LL); B.pb(-1LL); st.pb(-1LL); C.pb(-1LL);}
REP(i,0,N)
{
cin>>st[i]>>A[i]>>B[i]>>C[i];
st[i]*=2LL; A[i]*=2LL; B[i]*=2LL; C[i]/=2LL;
}
REP(t,1,T)
{
REP(i,0,L)
{
newdp[i]=dp[i];
if(i>0) {newdp[i]=max(newdp[i],dp[i-1]+pro[i-1].ss);}
if(i<L-1) {newdp[i]=max(newdp[i],dp[i+1]+pro[i+1].ff);}
}
REP(i,0,L) {dp[i]=newdp[i];}
REP(i,0,L) {pro[i]={0,0};}
REP(i,0,N)
{
if(t<st[i] || t>st[i]+abs(B[i]-A[i])) {continue;}
if(t==st[i]) {loc[i]=A[i]; continue;}
if(t==st[i]+abs(B[i]-A[i])) {loc[i]=-1LL; continue;}
if(A[i]>B[i]) {loc[i]--;} else {loc[i]++;}
}
REP(i,0,N)
{
if(loc[i]==-1LL) {continue;}
if(A[i]>B[i]) {pro[loc[i]].ff=max(pro[loc[i]].ff,C[i]);}
if(A[i]<B[i]) {pro[loc[i]].ss=max(pro[loc[i]].ss,C[i]);}
}
olddp.pb(dp);
}
REP(i,0,T) {Out(olddp[i]);}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |