#include #include #include #include #include #include using namespace std; #define MAXWORKER 110 #define MAXBENCH 16005 #define dprintf(x,args...) struct _worker { int L,P,S; }; bool operator < (const _worker& inca,const _worker& incb) { return inca.S>>>>>> i=%d\n",i); deque pbus; pbus.push_back(max(0,worker[i].S-worker[i].L)); for(int j=1;j<=N;j++) { dprintf(">>> j=%d (i=%d)\n",j,i); dp[i][j]=max(dp[i-1][j],dp[i][j-1]); /// i-th Worker cannot reach j-th bench /// !!! Must include 'equal' (=) !!! if(worker[i].L+worker[i].S<=j) continue; while(!pbus.empty()&&pbus.front()+worker[i].L