#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<map>
#include<set>
#define ll long long
using namespace std;
inline int read(){
int x=0,o=1;char ch=getchar();
while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar();
if(ch=='-')o=-1,ch=getchar();
while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
return x*o;
}
const int N=200005;
ll s[N],e[N],d[N];
inline ll calc(int n,ll x){
ll sum=0;
for(int i=1;i<=n;++i)
if(s[i]<=x)sum+=(min(e[i],x)-s[i])/d[i]+1;
return sum;
}
int main(){
int T=read();
while(T--){
ll n=read(),dist=0;
for(int i=1;i<=n;++i){
s[i]=read();e[i]=read();d[i]=read();
dist=max(dist,e[i]);
}
if(calc(n,dist)%2==0){//特判
puts("Poor QIN Teng:( ");
continue;
}
ll l=1,r=dist;
while(l<r){
ll mid=(l+r)>>1;
if(calc(n,mid)%2==1)r=mid;
else l=mid+1;
}
ll ans=0;
for(int i=1;i<=n;++i){
if(s[i]>l||e[i]<l)continue;
if((l-s[i])%d[i]==0)++ans;
}
printf("%lld %lld\n",l,ans);
}
return 0;
}
原文:https://www.cnblogs.com/PPXppx/p/11537729.html