Thứ Sáu, 11 tháng 1, 2019

UVa 00161 - Traffic Lights * (this is a typical situation on the road)

Link: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&page=show_problem&problem=97
Sol:
#include <algorithm>
#include <cctype>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <map>
#include <string>
#include <vector>
#define FileIn(file) freopen(file".inp", "r", stdin)
#define FileOut(file) freopen(file".out", "w", stdout)
#define FOR(i, a, b) for (int i=a; i<=b; i++)
#define REP(i, n) for (int i=0; i<n; i++)
#define Fill(ar, val) memset(ar, val, sizeof(ar))
#define PI 3.1415926535897932385
#define uint64 unsigned long long
#define int64 long long
#define all(ar) ar.begin(), ar.end()
#define pb push_back
#define bit(n) (1<<(n))
#define Last(i) ( i & -i )
#define INF 500000000
#define maxN 105
using namespace std;
int n, light[maxN], time_min;
bool check(int t) {
FOR (i, 1, n) {
int m = t / light[i];
if (m % 2) return false;
m = t % light[i];
if (m >= light[i] - 5) return false;
}
return true;
}
int solve() {
int t = time_min << 1, g = time_min - 5;
while (t <= 18000) {
FOR (i, 0, g)
if (t + i > 18000) return -1;
else if (check(t + i)) return t + i;
t += time_min << 1;
}
return -1;
}
main() {
// FileIn("test"); FileOut("test");
while (scanf("%d", &light[1]) != EOF) {
if (!light[1]) break;
n = 1;
time_min = light[1];
while (light[n]) {
scanf("%d", &light[++n]);
if (light[n]) time_min = min(time_min, light[n]);
}
n--;
int res = solve();
if (res < 0) puts("Signals fail to synchronise in 5 hours");
else {
int h = res / 3600;
int m = (res - h * 3600) / 60;
int s = res - h * 3600 - m * 60;
if (h < 10) printf("0");
printf("%d:", h);
if (m < 10) printf("0");
printf("%d:", m);
if (s < 10) printf("0");
printf("%d\n", s);
}
}
scanf("%d %d", &light[2], &light[3]);
}

Không có nhận xét nào:

Đăng nhận xét

Bài G - Educatioal Round 62

Đề bài: Bạn được cho 1 đồ thị vô hướng đặc biệt. Nó bao gồm $2n$ đỉnh được đánh số từ 1 đến 2n. Dưới đây là một số đặc tính của đồ thị: + ...