Submission #1215819

#TimeUsernameProblemLanguageResultExecution timeMemory
1215819mayacGondola (IOI14_gondola)C++20
Compilation error
0 ms0 KiB
#include <iostream>
#include <vector>
#include <queue>
#include <set>
using namespace std;
int valid(int n, int v[]) {
    set<int> s;
    for (int i = 0; i < n; i++) {
        //cout << i << " ";
        if (v[i]<=n&&v[i] - 1 != (v[0] - 1 + i) % n)return 0;
        if (s.find(v[i]) != s.end())return 0;
        s.insert(v[i]);
    }
    return 1;
}
int replacement(int n, int tmp[], int ans[]) {
    int l = 0, t = -1;
    priority_queue < pair<int, int>> pq;
    set<int> s;
    for (int i = 0; i < n; i++) {
        l = max(l, tmp[i]);
        s.insert(i);
        if (tmp[i] <= n) {
            t = i;
            s.erase(i);
        }
        else {
            pq.push({ -tmp[i],i });
        }
    }

    vector<int> v(n);
    l -= n;
    if (t == -1) {
        for (int i = 0; i < n; i++)v[i] = i + 1;
    }
    else {
        //cout<<t<<"\n";
        for (int i = 0; i < n; i++) {
            v[(i + t) % n] = ((tmp[t] - 1 + i) % n) + 1;
            //cout<<v[((i+t)%n)]<<" "<<tmp[((i+t)%n)]<<"\n";
        }
    }

    for (int i = 0; i < l; i++) {
        int m = -pq.top().first, ind = pq.top().second;
        if (m == i + n + 1) {
            pq.pop();
            s.erase(ind);
            ans[i] = v[ind];
        }
        else {
            ind = *(s.begin());
            ans[i] = v[ind];
            v[ind] = n + i + 1;
        }
    }
    return l;

    return 2;
}
using ll = long long;
const long long mod = 1000000009;
ll powm(ll a, ll b) {
    if (b == 0)return 1;
    if (b % 2 == 0) {
        return powm((a * a) % mod, b / 2)%mod;
    }
    return (a*powm((a * a) % mod, b / 2))%mod;
}
int countReplacement(int n, int v[]) {
    if (!valid(n, v))return 0;
    vector<int> sub(250001,0);
    ll last=0, ans = n,c=0;
    for (int i = 0; i < n; i++) {
        if (v[i] > n) {
            sub[v[i]]=-1;
            c++;
        }else ans=1;
    }
    for(ll i=n+1;i<=250000&&c>1;i++){
        c+=sub[i];
        if(sub[i]==-1)i++;else{
        ans*=c;
        ans%=mod;
        }
    }
    return ans;
}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccjeHakG.o: in function `main':
grader.cpp:(.text.startup+0xae): undefined reference to `valid'
/usr/bin/ld: grader.cpp:(.text.startup+0x108): undefined reference to `countReplacement'
/usr/bin/ld: grader.cpp:(.text.startup+0x135): undefined reference to `replacement'
collect2: error: ld returned 1 exit status