(I3
I103
I9
(dp0
Vagrain.%l
p1
(Vagrain2.cpp
p2
S'#include <iostream>\r\n#include <algorithm>\r\nusing namespace std;\r\nstruct agr{\r\nint b,e,br;\r\n};\r\nagr drops[1000001],ost[1000001];\r\nint highn(agr a[],int bri,int k)\r\n{\r\n    if(k<a[0].b)return -1;\r\n    if(k>a[bri-1].e)return -1;\r\n    int l=0,r=bri-1;\r\n    while(l<=r)\r\n    {\r\n        int mid=(l+r)>>1;\r\n        if(k>a[mid].e && k>=a[mid].b && k<=a[mid].e)return mid+1;\r\n        else if(k>a[mid-1].e && k>=a[mid].b && k<=a[mid].e)return mid;\r\n        else if(k>a[mid].e)l=mid+1;\r\n        else if(k<a[mid].b)r=mid-1;\r\n    }\r\n    return -1;\r\n}\r\nint cmp(agr a,agr b)\r\n{\r\n    return a.b<b.b;\r\n}\r\nint main( )\r\n{\r\n   int n,len,d,dr,a,b,br=0,bri=0,i,j,tmpe,f;\r\n   cin>>n>>len>>d;\r\n   cin>>dr>>a>>b;\r\n   if(n<=1000000){\r\n      if(dr>d)\r\n      {\r\n        drops[bri].b=0;\r\n        drops[bri].e=dr-1;\r\n        drops[bri].br=dr;\r\n        bri++;\r\n      }\r\n      if(len-dr>d)\r\n      {\r\n        drops[bri].b=dr+1;\r\n        drops[bri].e=len;\r\n        drops[bri].br=dr;\r\n        bri++;\r\n      }\r\n      if(bri==0)cout<<1<<endl;\r\n      else\r\n      {\r\n        for(i=2;i<=n;i++)\r\n        {\r\n          if(bri==0){br=i;break;}\r\n          dr=(dr*a+b)%(len+1);\r\n          j=highn(drops,bri,dr);\r\n          if(j==-1)continue;\r\n          else\r\n          {\r\n            f=0;\r\n            if(dr-drops[j].b>d)\r\n            {\r\n                tmpe=drops[j].e;\r\n                drops[j].e=dr-1;\r\n                drops[j].br=dr-drops[j].b;\r\n                f=1;\r\n            }\r\n            if(drops[j].e-dr>d)\r\n            {\r\n                if(f==0)\r\n                {\r\n                   drops[j].b=dr+1;\r\n                   drops[j].br=drops[j].e-dr;\r\n                }\r\n                else\r\n                {\r\n                   drops[bri].b=dr+1;\r\n                   drops[bri].e=tmpe;\r\n                   drops[bri].br=drops[j].e-dr;\r\n                   bri++;\r\n                }\r\n            }\r\n            else if(dr-drops[j].b<=d && drops[j].e-dr<=d)\r\n            {\r\n               drops[j].b=1<<30;\r\n               drops[j].e=1<30;\r\n               bri--;\r\n            }\r\n          }\r\n           sort(drops,drops+bri,cmp);\r\n        }\r\n       cout<<i-1<<endl;\r\n      }\r\n   }\r\n   else cout<<-1<<endl;\r\n}\r\n/**\r\n12 23 7\r\n14 13 5\r\n*/\r\n'
p3
tp4
stp5
.