CSES - UKIEPC 2017 - Results
Submission details
Task:Alien Sunset
Sender:Pietari Kaskela
Submission time:2017-10-31 19:06:25 +0200
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.04 sdetails
#2ACCEPTED0.04 sdetails
#3ACCEPTED0.05 sdetails
#4ACCEPTED0.04 sdetails
#5ACCEPTED0.04 sdetails
#6ACCEPTED0.04 sdetails
#7ACCEPTED0.04 sdetails
#8ACCEPTED0.03 sdetails
#9ACCEPTED0.05 sdetails
#10ACCEPTED0.04 sdetails
#11ACCEPTED0.04 sdetails
#12ACCEPTED0.05 sdetails
#13ACCEPTED0.04 sdetails
#14ACCEPTED0.03 sdetails
#15ACCEPTED0.03 sdetails
#16ACCEPTED0.04 sdetails

Code

#include <bits/stdc++.h>

using namespace std;
bool vittu[22][1000];
int main(){
	int64_t n; cin >> n;
	int64_t h[22], r[22], t[22];
	int64_t d = 0;

	for(int i = 0; i < n; ++i){
		cin >> h[i] >> r[i] >> t[i];
		d = max(d, h[i]);
		int st = r[i]+1;
		while(st != t[i]){
			vittu[i][st] = 1;
			++st;
			st = st%h[i];
		}
	}
	for(int i = 0; i < 1825; ++i){
		for(int j = 0; j < d; ++j){
			bool g = true;
			for(int k = 0; k < n; ++k){
				int hour = (i*d+j)%h[k];
				// /cout << hour << " vs " << h[k] << " " << r[k] << " " << t[k] << " " << vittu[k][hour] << endl;
				//cout << (hour > r[k] && hour < t[k]) << (hour > r[k] && t[k] < r[k]) << (hour < r[k] && t[k] < r[k]) << endl;
				if(vittu[k][hour]){
					g = false;
					break;
				}
			}
			if(g){
				cout << i*d+j << endl;
				return 0;
			}
		}
	}
	cout << "impossible\n";
	return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
1
5 1 3

correct output
0

user output
0

Test 2

Verdict: ACCEPTED

input
2
7 2 4
9 3 5

correct output
0

user output
0

Test 3

Verdict: ACCEPTED

input
12
34 28 0
43 38 0
46 13 0
26 8 0
...

correct output
0

user output
0

Test 4

Verdict: ACCEPTED

input
1
27 14 24

correct output
0

user output
0

Test 5

Verdict: ACCEPTED

input
15
27 18 8
58 8 11
13 0 3
73 42 25
...

correct output
33033

user output
33033

Test 6

Verdict: ACCEPTED

input
20
70 14 37
16 3 15
82 62 31
60 17 51
...

correct output
impossible

user output
impossible

Test 7

Verdict: ACCEPTED

input
15
81 69 14
3 1 2
53 4 36
8 0 5
...

correct output
40534

user output
40534

Test 8

Verdict: ACCEPTED

input
16
40 28 26
98 50 49
6 3 0
61 50 41
...

correct output
impossible

user output
impossible

Test 9

Verdict: ACCEPTED

input
16
92 37 56
89 6 59
100 76 89
40 11 6
...

correct output
impossible

user output
impossible

Test 10

Verdict: ACCEPTED

input
16
66 63 24
76 17 69
51 27 10
65 37 28
...

correct output
3799

user output
3799

Test 11

Verdict: ACCEPTED

input
2
46 11 3
96 56 80

correct output
3

user output
3

Test 12

Verdict: ACCEPTED

input
15
76 3 30
79 44 14
85 5 6
53 28 2
...

correct output
595

user output
595

Test 13

Verdict: ACCEPTED

input
14
35 27 34
96 2 37
78 19 17
61 27 7
...

correct output
impossible

user output
impossible

Test 14

Verdict: ACCEPTED

input
11
87 23 11
38 4 5
37 27 22
92 46 53
...

correct output
112247

user output
112247

Test 15

Verdict: ACCEPTED

input
6
27 20 10
91 71 29
82 69 72
28 24 5
...

correct output
64

user output
64

Test 16

Verdict: ACCEPTED

input
1
54 48 25

correct output
25

user output
25