Submission #309297

#TimeUsernameProblemLanguageResultExecution timeMemory
309297jainbot27곤돌라 (IOI14_gondola)C++17
20 / 100
22 ms1692 KiB
#include <bits/stdc++.h>
#include "gondola.h"
using namespace std;

#define f first
#define s second
#define pb push_back
#define ar array
#define all(x) x.begin(), x.end()
#define siz(x) (int)x.size()

#define FOR(x, y, z) for(int x = (y); x < (z); x++)
#define ROF(x, z, y) for(int x = (y-1); x >= (z); x--)
#define F0R(x, z) FOR(x, 0, z)
#define R0F(x, z) ROF(x, 0, z)
#define trav(x, y) for(auto&x:y)

using ll = long long;
using vi = vector<int>;
using vl = vector<long long>;
using pii = pair<int, int>;
using vpii = vector<pair<int, int>>;

template<class T> inline bool ckmin(T&a, T b) {return b < a ? a = b, 1 : 0;}
template<class T> inline bool ckmax(T&a, T b) {return b > a ? a = b, 1 : 0;}
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

const char nl = '\n';
const int mxN = 2e5 + 10;
const int MOD = 1e9 + 7;
const long long infLL = 1e18;

int valid(int n, int* _inputSeq){
    vi inputSeq(n);
    F0R(i, n){
        inputSeq[i] = _inputSeq[i];
        inputSeq[i]--;
    }
    vi vals;
    F0R(i, n){
        vals.pb(inputSeq[i]);
    }
    sort(all(vals));
    vals.resize(unique(all(vals))-vals.begin());
    if(siz(vals)!=n) return 0;
    if(vals[0]>=n) return 1;
    int pos;
    F0R(i, n){
        if(inputSeq[i] < n){
            pos = i;
            break;
        }
    }
    int ff = inputSeq[pos];
    F0R(i, n){
        if(inputSeq[i]<=n){
            int dif = i - pos;
            int should = (n + ff + dif)%n;
            if(inputSeq[i] != should) return 0;
        }
    }
    return 1;
}

int replacement(int n, int _gondolaSeq[], int _replacementSeq[]){
    vi gs(n), should(n), rs;
    F0R(i, n){
        gs[i] = _gondolaSeq[i];
    }
    int pos = -1, cnt = 0, mx = 0; 
    map<int, int> vals;
    F0R(i, n){
        ckmax(mx, gs[i]);
        if(gs[i] <= n){
            pos = i; 
            cnt++;
        }
    }
    F0R(i, n){
        int dif = i - pos;
        int should = (n + gs[pos] + dif) % n;
        if(gs[i]<=n&&gs[i]!=should) 
            assert(false);
        if(gs[i]==should)
            continue;
        vals[gs[i]]=should;     
    }
    if(cnt==n){
        return 0;
    }
    int x = 0;
    FOR(i, n+1, mx+1){
        if(vals.find(i)!=vals.end()){
            _replacementSeq[x] = vals[i];
            x++;
            continue;
        }
        x++;
        _replacementSeq[x] = gs[mx];
        gs[mx]++;
    }
    return x - 1;
}

int countReplacement(int n, int inputSeq[]){

}

// int32_t main(){
//     ios_base::sync_with_stdio(0); cin.tie(0);


//     return 0;
// }

Compilation message (stderr)

gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:107:1: warning: no return statement in function returning non-void [-Wreturn-type]
  107 | }
      | ^
gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:47:9: warning: 'pos' may be used uninitialized in this function [-Wmaybe-uninitialized]
   47 |     int pos;
      |         ^~~
#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...
#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...