#include <bits/stdc++.h>
using namespace std;
#define all(x) (x).begin(), (x).end()
typedef pair<int, int> ii;
char colour[200005];
int deg[200005];
int X[200005];
int Y[200005];
vector<int> AdjList[200005];
int AdjMat[3005][3005];
int A[200005][20];
int B[200005][20];
int log_2[200005];
int N;
void init(){
log_2[1] = 0;
for(int i = 1; i <= 200000; i ++){
log_2[i] = log_2[i/2]+1;
}
for(int k = 1; k <= 19; k ++){
for(int i = 0; i+(1<<(k-1)) <= N; i ++){
A[i][k] = min(A[i][k-1], A[i+(1<<(k-1))][k-1]);
B[i][k] = max(B[i][k-1], B[i+(1<<(k-1))][k-1]);
}
}
}
/*int rminq(int i, int j){
int log2r = log2[j-i+1];
return min(A[i][log2r], A[j-(1<<log2r)+1][log2r]);
}*/
int rmaxq(int i, int j){
int log2r = log_2[j-i+1];
return max(B[i][log2r], B[j-(1<<log2r)+1][log2r]);
}
int main(){
int ST;
scanf("%d", &ST);
scanf("%d", &N);
scanf(" %s", colour);
memset(AdjMat, 0, sizeof(AdjMat));
for(int i = 0; i < N; i ++){
AdjList[i+1].push_back( ((i+1)%N)+1 );
//printf("%d %d\n", i+1, ((i+1)%N)+1);
AdjList[((i+1)%N)+1].push_back( i+1 );
if(ST != 3){
AdjMat[((i+1)%N)+1][i+1] = colour[i]-'0';
AdjMat[i+1][((i+1)%N)+1] = colour[i]-'0';
}
}
memset(deg, 0, sizeof(deg));
vector<ii> edges;
for(int i = 0; i < N-3; i ++){
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
X[i] = min(a, b);
Y[i] = max(a, b);
edges.push_back(ii(X[i], Y[i]));
if(ST != 3){
AdjMat[a][b] = AdjMat[b][a] = c;
}
AdjList[a].push_back(b);
AdjList[b].push_back(a);
}
sort(all(edges));
for(int i = 0; i < N-3; i ++){
A[i][0] = B[i][0] = edges[i].second;
}
for(int i = 0; i < N-3; i ++){
int X, Y;
tie(X, Y) = edges[i];
//printf("Edge: %d %d\n", X, Y);
int indx_min = lower_bound(all(edges), ii(X+1, -1))-edges.begin();
int indx_max = lower_bound(all(edges), ii(Y, -1))-edges.begin();
if(indx_min == indx_max){
continue;
}
int temp_max = rmaxq(indx_min, indx_max-1);
if(temp_max > Y){
printf("neispravna triangulacija\n");
return 0;
}
}
/*for(int i = 0; i < N-3; i ++){
for(int j = 0; j < N-3; j ++){
if(i == j){continue;}
if(X[i] < X[j] && X[j] < Y[i] && Y[i] < Y[j]){
printf("neispravna triangulacija");
return 0;
}
if(X[j] < Y[i] && Y[i] < Y[j] && Y[j] < X[i]){
printf("neispravna triangulacija");
return 0;
}
if(Y[i] < Y[j] && Y[j] < X[i] && X[i] < X[j]){
printf("neispravna triangulacija");
return 0;
}
if(Y[j] < X[i] && X[i] < X[j] && X[j] < Y[i]){
printf("neispravna triangulacija");
return 0;
}
}
}*/
if(ST == 3){printf("tocno"); return 0;}
for(int i = 1; i <= N; i ++){
for(int j: AdjList[i]){
//printf("AdjList: %d %d\n", i, j);
for(int k: AdjList[j]){
if(i == k){continue;}
//printf("324: %d %d %d\n", i, j, k);
if(AdjMat[i][k]){
if( ((1<<AdjMat[i][k]) + (1<<AdjMat[i][j]) + (1<<AdjMat[j][k])) != 14){
//printf("%d%d%d\n", AdjMat[i][k], AdjMat[i][j], AdjMat[j][k]);
printf("neispravno bojenje");
return 0;
}
}
}
}
}
printf("tocno");
return 0;
}
Compilation message
checker.cpp: In function 'int main()':
checker.cpp:51:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%d", &ST);
~~~~~^~~~~~~~~~~
checker.cpp:53:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%d", &N);
~~~~~^~~~~~~~~~
checker.cpp:55:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf(" %s", colour);
~~~~~^~~~~~~~~~~~~~~
checker.cpp:75:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d%d", &a, &b, &c);
~~~~~^~~~~~~~~~~~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
28 ms |
41216 KB |
Output is correct |
2 |
Correct |
27 ms |
41344 KB |
Output is correct |
3 |
Correct |
33 ms |
41216 KB |
Output is correct |
4 |
Correct |
29 ms |
41216 KB |
Output is correct |
5 |
Correct |
31 ms |
41208 KB |
Output is correct |
6 |
Correct |
27 ms |
41216 KB |
Output is correct |
7 |
Correct |
27 ms |
41216 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
28 ms |
41216 KB |
Output is correct |
2 |
Correct |
27 ms |
41344 KB |
Output is correct |
3 |
Correct |
33 ms |
41216 KB |
Output is correct |
4 |
Correct |
29 ms |
41216 KB |
Output is correct |
5 |
Correct |
31 ms |
41208 KB |
Output is correct |
6 |
Correct |
27 ms |
41216 KB |
Output is correct |
7 |
Correct |
27 ms |
41216 KB |
Output is correct |
8 |
Correct |
29 ms |
41600 KB |
Output is correct |
9 |
Correct |
36 ms |
41600 KB |
Output is correct |
10 |
Correct |
30 ms |
41768 KB |
Output is correct |
11 |
Correct |
36 ms |
41600 KB |
Output is correct |
12 |
Correct |
32 ms |
41600 KB |
Output is correct |
13 |
Correct |
29 ms |
41600 KB |
Output is correct |
14 |
Correct |
28 ms |
41600 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
281 ms |
84452 KB |
Output is correct |
2 |
Correct |
292 ms |
84580 KB |
Output is correct |
3 |
Correct |
259 ms |
84536 KB |
Output is correct |
4 |
Correct |
282 ms |
84500 KB |
Output is correct |
5 |
Correct |
262 ms |
84508 KB |
Output is correct |
6 |
Correct |
250 ms |
83532 KB |
Output is correct |
7 |
Correct |
241 ms |
83464 KB |
Output is correct |
8 |
Correct |
224 ms |
83556 KB |
Output is correct |
9 |
Correct |
212 ms |
83404 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
229 ms |
83064 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
28 ms |
41216 KB |
Output is correct |
2 |
Correct |
27 ms |
41344 KB |
Output is correct |
3 |
Correct |
33 ms |
41216 KB |
Output is correct |
4 |
Correct |
29 ms |
41216 KB |
Output is correct |
5 |
Correct |
31 ms |
41208 KB |
Output is correct |
6 |
Correct |
27 ms |
41216 KB |
Output is correct |
7 |
Correct |
27 ms |
41216 KB |
Output is correct |
8 |
Correct |
29 ms |
41600 KB |
Output is correct |
9 |
Correct |
36 ms |
41600 KB |
Output is correct |
10 |
Correct |
30 ms |
41768 KB |
Output is correct |
11 |
Correct |
36 ms |
41600 KB |
Output is correct |
12 |
Correct |
32 ms |
41600 KB |
Output is correct |
13 |
Correct |
29 ms |
41600 KB |
Output is correct |
14 |
Correct |
28 ms |
41600 KB |
Output is correct |
15 |
Correct |
281 ms |
84452 KB |
Output is correct |
16 |
Correct |
292 ms |
84580 KB |
Output is correct |
17 |
Correct |
259 ms |
84536 KB |
Output is correct |
18 |
Correct |
282 ms |
84500 KB |
Output is correct |
19 |
Correct |
262 ms |
84508 KB |
Output is correct |
20 |
Correct |
250 ms |
83532 KB |
Output is correct |
21 |
Correct |
241 ms |
83464 KB |
Output is correct |
22 |
Correct |
224 ms |
83556 KB |
Output is correct |
23 |
Correct |
212 ms |
83404 KB |
Output is correct |
24 |
Runtime error |
229 ms |
83064 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
25 |
Halted |
0 ms |
0 KB |
- |