Submission #309299

#TimeUsernameProblemLanguageResultExecution timeMemory
309299jainbot27Gondola (IOI14_gondola)C++17
25 / 100
22 ms1660 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), rs;
    F0R(i, n){
        gs[i] = _gondolaSeq[i]-1;
    }
    int pos = 0, cnt = 0, mx = -1, sp, mxpos; 
    sp = 1;
    map<int, int> vals;
    F0R(i, n){
        if(ckmax(mx, gs[i])) mxpos = i;
        if(gs[i] < n){
            pos = i; 
            sp = gs[i];
            cnt++;
        }
    }
    if(cnt==n){
        return 0;
    }
    // cout << pos << " " <<  sp << endl;
    int foo;
    F0R(i, n){
        int dif = i - pos;
        int should=  (n + sp + dif) % n;
        // cout << i << " " << should << endl;
        if(mxpos==i){
            foo = should;
        }
        if(gs[i]<n&&gs[i]!=should) 
            assert(false);
        if(gs[i]==should)
            continue;
        vals[gs[i]]=should;     
    }
    int x = 0;
    // cout << mx << endl;
    FOR(i, n, mx+1){
        if(vals.find(i)!=vals.end()&&i!=mx){
            cout << i << " " << vals[i] << endl;
            _replacementSeq[x] = vals[i]+1;
            x++;
            continue;
        }
        _replacementSeq[x] = foo+1;
        foo=i;
        x++;
        // cout<<i<<endl;
    }
    return x;
}

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

}

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

//     int gondolaSeq[] = {2, 3, 4, 9, 6, 7, 1};
//     int n = 7;
//     int replacementSeq[10];
//     cout << replacement(n, gondolaSeq, replacementSeq) << nl;
//     F0R(i, 2){
//         cout<< replacementSeq[i] << " ";
//     }
//     cout << nl;
//     return 0;
// }

Compilation message (stderr)

gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:118:1: warning: no return statement in function returning non-void [-Wreturn-type]
  118 | }
      | ^
gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:108:33: warning: 'foo' may be used uninitialized in this function [-Wmaybe-uninitialized]
  108 |         _replacementSeq[x] = foo+1;
      |                              ~~~^~
gondola.cpp:90:9: warning: 'mxpos' may be used uninitialized in this function [-Wmaybe-uninitialized]
   90 |         if(mxpos==i){
      |         ^~
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...