题意:题目很简单,就是说现在想找一个最早的时间,所有星球都在晚上,现在已经知道各个星球的自转周期,并且知道他们各自日出日落时间。。。
思路:一共100*1850天,那样我直接枚举,找到第一个n个都是夜晚的天就可以了。。
代码:
#include<bits/stdc++.h>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn = 1e6+7;
int n, day[maxn];
typedef struct node{
int h, r, t;
} HRT;
HRT m[maxn];
bool solve(int i, int j)
{
if(m[j].r > m[j].t){
if(i>=m[j].t&&i <= m[j].r) return true;
}
else{
if(i >= m[j].t||i <= m[j].r) return true;
}
return false;
}
int main()
{
while(~scanf("%d",&n))
{
memset(day, 0, sizeof(day));
int maxh = 0;
for(int i = 0; i < n; i++) scanf("%d%d%d",&m[i].h, &m[i].r, &m[i].t), maxh = max(maxh, m[i].h);
for(int i = 0; i < maxh*1825; i++)
for(int j = 0; j < n; j++) if(solve(i%m[j].h, j)) day[i]++;
int dd = -1;
for(int i = 0; i < maxh*1825; i++)
if(day[i] == n) {
dd = i; break;
}
if(dd == -1) printf("impossible\n");
else printf("%d\n", dd);
}
return 0;
}