Submission #222414

#TimeUsernameProblemLanguageResultExecution timeMemory
222414cheehengChecker (COCI19_checker)C++14
29 / 110
241 ms83192 KiB
#include <bits/stdc++.h>
using namespace std;

char colour[200005];

int deg[200005];

int X[200005];
int Y[200005];

vector<int> AdjList[200005];

int AdjMat[3005][3005];

int main(){
    int ST;
    scanf("%d", &ST);

    int N;
    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 );

        AdjMat[((i+1)%N)+1][i+1] = colour[i]-'0';
        AdjMat[i+1][((i+1)%N)+1] = colour[i]-'0';
    }

    for(int i = 1; i <= N; i ++){
        for(int j: AdjList[i]){
            //printf("%d %d\n", i, j);
        }
    }

    memset(deg, 0, sizeof(deg));
    for(int i = 0; i < N-3; i ++){
        int a, b, c;
        scanf("%d%d%d", &a, &b, &c);

        X[i] = a;
        Y[i] = b;
        AdjMat[a][b] = AdjMat[b][a] = c;
        AdjList[a].push_back(b);
        AdjList[b].push_back(a);
    }

    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;
            }
        }
    }

    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 (stderr)

checker.cpp: In function 'int main()':
checker.cpp:37:17: warning: unused variable 'j' [-Wunused-variable]
         for(int j: AdjList[i]){
                 ^
checker.cpp:17:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &ST);
     ~~~~~^~~~~~~~~~~
checker.cpp:20:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &N);
     ~~~~~^~~~~~~~~~
checker.cpp:22:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf(" %s", colour);
     ~~~~~^~~~~~~~~~~~~~~
checker.cpp:45: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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...