| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
C++ AC,131ms, 特殊数据可过, 代码有些乱#include <iostream>
#include <queue>
using namespace std;
typedef struct{
int num;
int add;
}case_type;
bool inline firstMin(case_type&,case_type&,case_type&);
bool operator ==(const case_type& x, const case_type&y){
return x.num == y.num;
}
case_type operator ++(case_type& x){
x.num += x.add;
return x;
}
int main(int argc, char** argv){
queue<int*> qi;
case_type p,e,i;
int *temp;
int result;
p.add=23; e.add=28; i.add=33;
int a,b,c,d;
while(cin>>a>>b>>c>>d){
if(a==-1 && b==-1 && c==-1 && d==-1)
break;
temp = new int[4];
temp[0]=a; temp[1]=b; temp[2]=c; temp[3]=d;
qi.push(temp);
}
int *back;
int n=0;
while(!qi.empty()){
n++;
back = qi.front();
qi.pop();
p.num=back[0];
e.num=back[1];
i.num=back[2];
result=back[3];
if(p==e && e==i && i==p && p.num==result)
++p; ++e; ++i;
while(!(p==e && e==i && p==i && p.num > result)){
firstMin(p,e,i);
}
if(p.num-result > 21252)
result = p.num-21252-result;
else
result = p.num-result;
cout<<"Case "<<n<<": the next triple peak occurs in "<<result<<" days. "<<endl;
}
return 0;
}
bool firstMin(case_type& x, case_type& y, case_type& z){
if(x==y && y==z && z==x){
return true;
}
if((x.num <= y.num && x.num < z.num) || (x.num < y.num && x.num <= z.num)){
++x;
return false;
}
else if((y.num <= z.num && y.num < x.num)||(y.num < z.num && y.num <= x.num)){
++y;
return false;
}
else if((z.num <= x.num && z.num < y.num)||(z.num < x.num && z.num <=y.num)){
++z;
return false;
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator