Submission #1064162

# Submission time Handle Problem Language Result Execution time Memory
1064162 2024-08-18T09:47:03 Z damjandavkov Gondola (IOI14_gondola) C++17
100 / 100
17 ms 6256 KB
#include "gondola.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int valid(int n, int v[])
{
    int i, x = -1, y;
    vector<bool> w(250000, 0);
    for (i = 0; i < n; i++)
    {
        v[i]--;
        if (w[v[i]])
            return 0;
        w[v[i]] = 1;
        if (v[i] < n)
        {
            y = v[i] - i;
            if (y < 0)
                y += n;
            if (x == -1)
                x = y;
            if (x != y)
                return 0;
        }
    }
    return 1;
}
int replacement(int n, int v[], int rS[])
{
    int i, x = -1, y, t = n, j = 0;
    vector<bool> w(250000, 0);
    vector<vector<int> > in(n);
    for (i = 0; i < n; i++)
    {
        v[i]--;
        if (w[v[i]])
            return 0;
        w[v[i]] = 1;
        if (v[i] < n)
        {
            y = v[i] - i;
            if (y < 0)
                y += n;
            if (x == -1)
                x = y;
            if (x != y)
                return 0;
        }
    }
    if (x == -1)
        x = 0;
    for (i = 0; i < n; i++)
        in[(i + x) % n] = {v[i], (i + x) % n};
    sort(in.begin(), in.end());
    for (i = 0; i < n; i++)
    {
        if (in[i][0] < n)
            continue;
        rS[j] = in[i][1] + 1;
        j++;
        t++;
        while (t <= in[i][0])
        {
            rS[j] = t;
            j++;
            t++;
        }
    }
    return j;
}
ll r = 1000000009, p;
ll po(ll a, int b)
{
    if (!b)
        return 1;
    ll t = po(a, b / 2);
    t *= t;
    t %= r;
    if (b % 2)
        return t * a % r;
    return t;
}
int countReplacement(int n, int v[])
{
    int i, x = -1, y, t = n, m;
    vector<int> in;
    for (i = 0; i < n; i++)
    {
        v[i]--;
        if (v[i] < n)
        {
            y = v[i] - i;
            if (y < 0)
                y += n;
            if (x == -1)
                x = y;
            if (x != y)
                return 0;
        }
        else
            in.push_back(v[i]);
    }
    m = in.size();
    sort(in.begin(), in.end());
    if (m == n)
        p = n;
    else
        p = 1;
    for (i = 0; i < in.size(); i++)
    {
        if (in[i] < t)
            return 0;
        p *= po(m - i, in[i] - t);
        p %= r;
        t = in[i] + 1;
    }
    return p;
}

Compilation message

gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:109:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  109 |     for (i = 0; i < in.size(); i++)
      |                 ~~^~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 444 KB Output is correct
3 Correct 0 ms 444 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 1 ms 348 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 3 ms 824 KB Output is correct
7 Correct 6 ms 1116 KB Output is correct
8 Correct 5 ms 976 KB Output is correct
9 Correct 2 ms 584 KB Output is correct
10 Correct 5 ms 1116 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 3 ms 604 KB Output is correct
7 Correct 6 ms 1116 KB Output is correct
8 Correct 5 ms 1116 KB Output is correct
9 Correct 2 ms 604 KB Output is correct
10 Correct 7 ms 1116 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 1 ms 348 KB Output is correct
13 Correct 3 ms 800 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 6 ms 1116 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 344 KB Output is correct
4 Correct 0 ms 344 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 352 KB Output is correct
8 Correct 1 ms 344 KB Output is correct
9 Correct 1 ms 344 KB Output is correct
10 Correct 1 ms 344 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 600 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 1 ms 344 KB Output is correct
9 Correct 1 ms 344 KB Output is correct
10 Correct 1 ms 348 KB Output is correct
11 Correct 11 ms 5468 KB Output is correct
12 Correct 13 ms 6256 KB Output is correct
13 Correct 13 ms 2904 KB Output is correct
14 Correct 11 ms 5468 KB Output is correct
15 Correct 13 ms 2768 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 440 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 448 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 9 ms 1576 KB Output is correct
10 Correct 8 ms 1372 KB Output is correct
11 Correct 3 ms 856 KB Output is correct
12 Correct 4 ms 964 KB Output is correct
13 Correct 2 ms 600 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 352 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 344 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 9 ms 1496 KB Output is correct
10 Correct 7 ms 1316 KB Output is correct
11 Correct 3 ms 860 KB Output is correct
12 Correct 4 ms 860 KB Output is correct
13 Correct 1 ms 348 KB Output is correct
14 Correct 13 ms 2236 KB Output is correct
15 Correct 17 ms 2260 KB Output is correct
16 Correct 3 ms 860 KB Output is correct
17 Correct 10 ms 1688 KB Output is correct
18 Correct 6 ms 1124 KB Output is correct