flappy bird
http://www.gdfzoj.com/oj/problem/469
bird[i+k] in [nowbird -x[i]+x[i-1], nowbird+x[i]-x[i-1]];
再加上 每根柱子上下限制
如果x[i] ,max 奇偶不同 需要向下/向上 +-1
因为 负数取模为负 所以要用 & 1和^
然后就过了
#include<cstdio>
#include<algorithm>
using namespace std;
int a[5500000],b[5500000],x[5500000];
int i,j,k,l,m,n,q,w,up,dn;
bool p;
int main(){
scanf("%d%d",&n,&m);
p=true;
for (i=1;i<=n;i++) scanf("%d%d%d",&x[i],&a[i],&b[i]);
for(i=1;i<=n;i++){
up= min(up+x[i]-x[i-1],b[i]-1);
if((up & 1)^(x[i] & 1)) up--;
dn= max(dn-x[i]+x[i-1],a[i]+1);
if((dn & 1)^(x[i] & 1)) dn++;
if (up<dn || a[i]>= up || b[i]<= dn) p=false;
}
if (p) printf("%d\n",(dn+x[n]) / 2);
if(!p) printf("NIE\n");
return 0;
}