Submission #308394

#TimeUsernameProblemLanguageResultExecution timeMemory
308394talant117408Gondola (IOI14_gondola)C++17
55 / 100
32 ms2416 KiB
#include "gondola.h"
#include <bits/stdc++.h>
 
using namespace std;
 
typedef long long ll;
typedef pair <int, int> pii;
 
#define precision(n) fixed << setprecision(n)
#define pb push_back
#define ub upper_bound
#define lb lower_bound
#define mp make_pair
#define eps (double)1e-9
#define PI 2*acos(0.0)
#define endl "\n"
#define sz(v) (v).size()
#define all(v) v.begin(),v.end()
#define rall(v) v.rbegin(),v.rend()
#define do_not_disturb ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);

const ll mod = 1e9+9;

int valid(int n, int s[]){
    int in = -1, flag = 1, i;
    vector <int> vis(250007);
    
    for(i = 0; i < n; i++){
        if(vis[s[i]]){ 
            flag--; 
            break; 
        }
        vis[s[i]]++;
        
        if(in == -1 && s[i] <= n){ 
            in = s[i]; 
        }
        else if(s[i] <= n && in != s[i]){ 
            flag--; 
            break; 
        }
        
        in = (in == -1 ? in : (in+1 > n ? 1 : in+1));
    }
    
    return flag;
}

//----------------------

int replacement(int n, int gon[], int repl[]){
    
    int i, num = 0;
    
    vector <int> prev(n);
    iota(all(prev), 1);
    int in = -1, j;
    for(i = 0; i < n; i++){
        if(in == -1 && gon[i] <= n){
            in = gon[i];
            j = i;
            break;
        }
    }
    if(in != -1){
        for(i = j; i < n; i++){
            prev[i] = in;
            in = (in == n ? 1 : in+1);
        }
        for(i = 0; i < j; i++){
            prev[i] = in;
            in = (in == n ? 1 : in+1);
        }
    }
    
    vector <pii> bigger;
    for(i = 0; i < n; i++){
        if(gon[i] > n){
            bigger.pb({gon[i], i});
        }
    }
    
    int op = n;
    sort(all(bigger));
    
    for(auto to : bigger){
        for(j = op; j < to.first; j++){
            repl[num] = prev[to.second];
            num++;
            prev[to.second] = j+1;
        }
        op = to.first;
    }
    
    return num;
}

//----------------------

int countReplacement(int n, int inputSeq[]){
    
    return -3;
}
#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...