Submission #199758

#TimeUsernameProblemLanguageResultExecution timeMemory
199758SamAndChecker (COCI19_checker)C++17
110 / 110
1756 ms62152 KiB
#include <bits/stdc++.h>
using namespace std;
const int N = 200005;

int n;
char a[N];
map<int, map<int, int> > c;

int l[N], r[N];

bool stg(int x)
{
    if (c.find(l[x]) != c.end() && c[l[x]].find(r[x]) != c[l[x]].end())
        return true;
    return false;
}

int main()
{
    //freopen("input.txt", "r", stdin);
    scanf("%d", &n);
    scanf("%d", &n);
    scanf(" %s", (a + 1));
    for (int i = 1; i < n; ++i)
    {
        c[i][i + 1] = (a[i] - '0');
        c[i + 1][i] = (a[i] - '0');
    }
    c[n][1] = (a[n] - '0');
    c[1][n] = (a[n] - '0');
    for (int i = 0; i < n - 3; ++i)
    {
        int x, y, z;
        scanf("%d%d%d", &x, &y, &z);
        c[x][y] = z;
        c[y][x] = z;
    }
    for (int i = 1; i < n; ++i)
        r[i] = i + 1;
    r[n] = 1;
    l[1] = n;
    for (int i = 2; i <= n; ++i)
        l[i] = i - 1;
    queue<int> q;
    for (int i = 1; i <= n; ++i)
    {
        if (stg(i))
            q.push(i);
    }
    bool z = true;
    for (int ii = 0; ii < n - 3; ++ii)
    {
        if (q.empty())
        {
            printf("neispravna triangulacija\n");
            return 0;
        }
        int x = q.front();
        q.pop();
        if (!stg(x))
        {
            printf("neispravna triangulacija\n");
            return 0;
        }
        if (c[x][l[x]] == c[x][r[x]] || c[x][l[x]] == c[l[x]][r[x]] || c[x][r[x]] == c[l[x]][r[x]])
            z = false;
        r[l[x]] = r[x];
        l[r[x]] = l[x];
        if (stg(l[x]))
            q.push(l[x]);
        if (stg(r[x]))
            q.push(r[x]);
    }
    if (!z)
        printf("neispravno bojenje\n");
    else
        printf("tocno\n");
    return 0;
}

Compilation message (stderr)

checker.cpp: In function 'int main()':
checker.cpp:21: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("%d", &n);
     ~~~~~^~~~~~~~~~
checker.cpp:23:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf(" %s", (a + 1));
     ~~~~~^~~~~~~~~~~~~~~~
checker.cpp:34:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d%d", &x, &y, &z);
         ~~~~~^~~~~~~~~~~~~~~~~~~~~~
#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...