Submission #250675

# Submission time Handle Problem Language Result Execution time Memory
250675 2020-07-18T16:54:25 Z hhh07 Gondola (IOI14_gondola) C++14
60 / 100
22 ms 4352 KB
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <utility>
#include <set>
#include <cmath>
#include <climits>
#include <cstring>
#include <stdio.h>
#include <assert.h>
#include "gondola.h"
 
using namespace std;
 
typedef long long ll;
typedef vector<ll> vi;
typedef pair<ll, ll> ii;

ll MOD = 1e9 + 9;

ll stepen(int x, int st){
    ll res = 1;
    for (int i = 1; i <= st; i++){
        res *= x;
        res %= MOD;
        if (i*2 <= st){
            i *= 2;
            res *= res;
            res %= MOD;
        }
        else{
            res *= stepen(x, st - i);
            res %= MOD;
            break;
        }
    }
    return res;
}

int valid(int n, int x[]){
    int j = -1;
    for (int i = 0; i < n; i++){
        if (x[i] > n)
            continue;
        j = i;
        break;
    }
    vector<bool> visited(250001, 0);
    for (int i = 0; i < n; i++){
        if (visited[x[i]])
            return false;
        visited[x[i]] = true;
        if (j > i){
            int moze = x[j] - (j - i);
            if (moze < 1)
                moze += n;
            if (x[i] <= n && moze != x[i]){
                return false;
            }
        }
        else{
            int moze = x[j] + (i - j);
            if (moze > n)
                moze -= n;
            if (x[i] <= n && moze != x[i]){
                return false;
            }
        }
    }
    return true;
}

int replacement(int n, int x[], int y[]){
    vector<ii> t;
    vi visited(250001, false);
    int j = 0;
    for (int i = 0; i < n; i++){
        visited[x[i]] = true;
        if (x[i] > n)
            t.push_back(make_pair(x[i], i));
        else
            j = i;
    }
    
    sort(t.begin(), t.end());
    for (int i = 0; i < n; i++){
        if (j > i){
            int moze = x[j] - (j - i);
            if (moze < 1)
                moze += n;
            x[i] = moze;
        }
        else{
            int moze = x[j] + (i - j);
            if (moze > n)
                moze -= n;
            x[i] = moze;
        }
    }
    vi res;
    vi a(250001, 0);
    for (int i = 0; i < t.size(); i++)
        a[x[t[i].second]] = true;
    for (int i = 0; i < t.size(); i++){
        int curr = t[i].first, idx = t[i].second;
        res.push_back(x[idx]);
        for (int j = x[idx] + 1; j <= curr; j++){
            if (!visited[j] && !a[j])
                res.push_back(j);
            visited[j] = true;
        }
        visited[curr] = true;
    }
    for (int i = 0; i < res.size(); i++)
        y[i] = res[i];
    return res.size();
}


int countReplacement(int n, int x[]){
    bool k = valid(n, x);
    if (!k)
        return 0;
    vi t;
    for (int i = 0; i < n; i++)
        if (x[i] > n)
            t.push_back(x[i]);

    sort(t.begin(), t.end());
    ll res = 1;
    int prev = n;
    for (int i = 0; i < t.size(); i++){
        res *= stepen(t.size() - i, t[i] - prev - 1);
        res = res%MOD;
        prev = t[i];
    }
    if (t.size() == n){
        res *= n;
        res = res%MOD;
    }
    return res;
}

Compilation message

gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:103:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < t.size(); i++)
                     ~~^~~~~~~~~~
gondola.cpp:105:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < t.size(); i++){
                     ~~^~~~~~~~~~
gondola.cpp:115:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < res.size(); i++)
                     ~~^~~~~~~~~~~~
gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:133:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < t.size(); i++){
                     ~~^~~~~~~~~~
gondola.cpp:138:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if (t.size() == n){
         ~~~~~~~~~^~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 0 ms 384 KB Output is correct
4 Correct 0 ms 384 KB Output is correct
5 Correct 1 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 0 ms 384 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Correct 1 ms 384 KB Output is correct
6 Correct 6 ms 640 KB Output is correct
7 Correct 13 ms 768 KB Output is correct
8 Correct 10 ms 768 KB Output is correct
9 Correct 4 ms 512 KB Output is correct
10 Correct 13 ms 768 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Correct 1 ms 384 KB Output is correct
6 Correct 6 ms 640 KB Output is correct
7 Correct 22 ms 768 KB Output is correct
8 Correct 16 ms 768 KB Output is correct
9 Correct 4 ms 512 KB Output is correct
10 Correct 13 ms 768 KB Output is correct
11 Correct 1 ms 384 KB Output is correct
12 Correct 1 ms 384 KB Output is correct
13 Correct 6 ms 640 KB Output is correct
14 Correct 0 ms 384 KB Output is correct
15 Correct 14 ms 1152 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 4224 KB Output is correct
2 Correct 2 ms 4224 KB Output is correct
3 Correct 2 ms 4224 KB Output is correct
4 Correct 3 ms 4224 KB Output is correct
5 Correct 2 ms 4224 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 4224 KB Output is correct
2 Correct 2 ms 4224 KB Output is correct
3 Correct 2 ms 4224 KB Output is correct
4 Correct 2 ms 4224 KB Output is correct
5 Correct 2 ms 4224 KB Output is correct
6 Correct 3 ms 4224 KB Output is correct
7 Correct 3 ms 4224 KB Output is correct
8 Incorrect 4 ms 4224 KB Integer 4512 violates the range [1, 72]
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 4224 KB Output is correct
2 Correct 3 ms 4224 KB Output is correct
3 Correct 3 ms 4224 KB Output is correct
4 Correct 3 ms 4224 KB Output is correct
5 Correct 3 ms 4224 KB Output is correct
6 Correct 3 ms 4224 KB Output is correct
7 Correct 4 ms 4352 KB Output is correct
8 Incorrect 3 ms 4224 KB Integer 4512 violates the range [1, 72]
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 0 ms 384 KB Output is correct
3 Correct 0 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 384 KB Output is correct
2 Correct 0 ms 384 KB Output is correct
3 Correct 0 ms 384 KB Output is correct
4 Correct 0 ms 384 KB Output is correct
5 Correct 0 ms 384 KB Output is correct
6 Correct 1 ms 384 KB Output is correct
7 Correct 0 ms 384 KB Output is correct
8 Correct 1 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 0 ms 384 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Correct 0 ms 384 KB Output is correct
6 Correct 1 ms 384 KB Output is correct
7 Correct 1 ms 384 KB Output is correct
8 Correct 1 ms 384 KB Output is correct
9 Correct 19 ms 1404 KB Output is correct
10 Correct 17 ms 1276 KB Output is correct
11 Correct 6 ms 896 KB Output is correct
12 Correct 8 ms 896 KB Output is correct
13 Correct 2 ms 512 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 0 ms 384 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
4 Correct 0 ms 384 KB Output is correct
5 Correct 0 ms 384 KB Output is correct
6 Correct 0 ms 384 KB Output is correct
7 Correct 1 ms 384 KB Output is correct
8 Correct 0 ms 384 KB Output is correct
9 Correct 19 ms 1404 KB Output is correct
10 Correct 15 ms 1276 KB Output is correct
11 Correct 6 ms 896 KB Output is correct
12 Correct 8 ms 896 KB Output is correct
13 Correct 2 ms 512 KB Output is correct
14 Runtime error 17 ms 2176 KB Execution killed with signal 11 (could be triggered by violating memory limits)
15 Halted 0 ms 0 KB -