What's the meaning of the TMD problem? It's annoying to knock. Feel nothing to use and then knocked out ... What does it mean to be greedy for a light exam?
Don't want to write anyway. Noip met the ... I don't care about him.
#include <iostream>#include<cstdio>#include<cstring>#include<algorithm>#defineMAXN 1050#defineMAXM 10050using namespacestd;intn,m,k,t[maxm],a[maxm],b[maxm],d[maxn],mx[maxn],arr[maxn],sum[maxn],nxt[maxn],ans=0;intMain () {scanf ("%d%d%d",&n,&m,&k); for(intI=2; i<=n;i++) scanf ("%d",&D[i]); for(intI=1; i<=m;i++) {scanf ("%d%d%d",&t[i],&a[i],&B[i]); Mx[a[i]]=max (Mx[a[i]],t[i]); sum[b[i]]++; } for(intI=1; i<=n;i++) sum[i]+=sum[i-1]; while(k) { for(intI=1; i<n;i++) arr[i+1]=max (Arr[i],mx[i]) +d[i+1]; Nxt[n-1]=N; for(inti=n-2; i>=1; i--) { if(mx[i+1]>=arr[i+1]) nxt[i]=i+1; Elsenxt[i]=nxt[i+1]; } intret=0, POS; for(intI=1; i<=n-1; i++) { if((Ret<sum[nxt[i]]-sum[i]) && (d[i+1]) {ret=sum[nxt[i]]-Sum[i]; POS=i+1; } } if(!ret) Break; D[pos]--;k--; } for(intI=1; i<n;i++) arr[i+1]=max (Arr[i],mx[i]) +d[i+1]; for(intI=1; i<=m;i++) ans+=arr[b[i]]-T[i]; printf ("%d\n", ans); return 0;}
Vijos 1741 Sightseeing Bus