#include "grader.h"
#include <algorithm>
#include <set>
#include <vector>
#define fi first
#define se second
#define rep(i,n) for(int i = 0; i < n; ++i)
#define pb push_back
using namespace std;
typedef pair<int,int> P;
typedef pair<int,P> Q;
const int MX = 100005, INF = 1001001001;
void schedule(int W, int N, int X[], int D[]) {
vector<P> e;
rep(i,N) {
e.pb(P(max(X[i]-D[i]+1,0),1));
e.pb(P(min(X[i]+D[i],W),-1));
}
sort(e.begin(), e.end());
vector<vector<P> > p(N+1);
int now = 0, pre = -1;
e.pb(P(INF,0));
rep(i,e.size()) {
if (e[i].fi != pre) {
p[now].pb(P(pre,e[i].fi));
pre = e[i].fi;
}
now += e[i].se;
}
set<P> s;
s.insert(P(-1,-1));
s.insert(P(INF,INF));
Q ans = Q(0,P(0,0));
for (int i = N; i >= 1; --i) {
rep(j,p[i].size()) {
int l = p[i][j].fi, r = p[i][j].se;
//printf("%d %d\n",l,r);
set<P>::iterator it = s.lower_bound(P(r,-1));
int nl = l, nr = r;
if (it->fi == r) {
nr = it->se;
s.erase(it++);
}
--it;
if (it->se == l) {
nl = it->fi;
s.erase(it);
}
s.insert(P(nl,nr));
ans = min(ans, Q(nl-nr,P(nl,nr-1)));
}
answer(i,ans.se.fi,ans.se.se);
}
}
./grader.cpp: In function ‘int main()’:
./grader.cpp:19: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result
./grader.cpp:21: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result