Submission #289566

#TimeUsernameProblemLanguageResultExecution timeMemory
289566TadijaSebezTreatment Project (JOI20_treatment)C++11
0 / 100
3071 ms2512 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define mp make_pair const int N=100050; const ll inf=9e18; ll dp[N]; int n,m; struct project{ int t,l,r,c; project(){} project(int a,int b,int d,int e):t(a),l(b),r(d),c(e){} bool operator < (project b){ if(r==n)return 0; if(b.r==n)return 1; return mp(r+t,r-t)<mp(b.r+b.t,b.r-b.t); } }pro[N]; int main(){ scanf("%i %i",&n,&m); for(int i=1;i<=m;i++)scanf("%i %i %i %i",&pro[i].t,&pro[i].l,&pro[i].r,&pro[i].c); sort(pro+1,pro+1+m); ll ans=inf; for(int i=1;i<=m;i++){ if(pro[i].l==1)dp[i]=pro[i].c; else dp[i]=inf; for(int j=1;j<i;j++){ int delta_t=abs(pro[i].t-pro[j].t); if(delta_t>pro[j].r+1-pro[i].l)continue; /*bool ok=0; if(pro[i].t<pro[j].t){ int l=pro[i].l+(pro[j].t-pro[i].t); if(l<=pro[j].r+1)ok=1; }else{ int r=pro[j].r-(pro[i].t-pro[j].t); if(r>=pro[i].l-1)ok=1; } if(ok)*/ dp[i]=min(dp[i],dp[j]+pro[i].c); } if(pro[i].r==n)ans=min(ans,dp[i]); } printf("%lld\n",ans==inf?-1:ans); return 0; }

Compilation message (stderr)

treatment.cpp: In function 'int main()':
treatment.cpp:20:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   20 |  scanf("%i %i",&n,&m);
      |  ~~~~~^~~~~~~~~~~~~~~
treatment.cpp:21:28: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   21 |  for(int i=1;i<=m;i++)scanf("%i %i %i %i",&pro[i].t,&pro[i].l,&pro[i].r,&pro[i].c);
      |                       ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...