답안 #1010488

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1010488 2024-06-29T07:12:03 Z Mardonbekhazratov 곤돌라 (IOI14_gondola) C++17
60 / 100
27 ms 6344 KB
#include "gondola.h"
#include<bits/stdc++.h>

using namespace std;

int valid(int n, int inputSeq[]){
    int mn=n,id=-1;
    map<int,int>cnt;
    for(int i=0;i<n;i++){
        cnt[inputSeq[i]]++;
        if(inputSeq[i]<=mn){
            mn=inputSeq[i];
            id=i;
        }
    }
    for(auto [x,y]:cnt){
        if(y>1) return 0;
    }
    if(mn==n) return 1;
    id=(id-mn+1+n)%n;
    for(int i=0;i<n;i++){
        if(inputSeq[(id+i)%n]==i+1 || inputSeq[(id+i)%n]>n) continue;
        return 0;
    }
    return 1;
}

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


int replacement(int n, int gondolaSeq[], int replacementSeq[]){
    const int N=2.5e5;
    vector<int>cnt(N+1,0);
    int mn=N,id=0,mx=0;
    set<int>s;
    set<pair<int,int>>t;
    for(int i=0;i<n;i++){
        cnt[gondolaSeq[i]]++;
        if(gondolaSeq[i]<mn){
            mn=gondolaSeq[i];
            id=i;
        }
        mx=max(mx,gondolaSeq[i]);
        if(gondolaSeq[i]<=n) s.insert(gondolaSeq[i]);
        else t.insert({gondolaSeq[i],i});
    }
    if(mn<=n){
        id=(id-mn+1+n)%n;
    }
    int ans=0,last=n+1;
    for(auto [x,y]:t){
        int k=(y-id+n)%n;
        replacementSeq[ans++]=k+1;
        for(int j=last;j<x;j++) replacementSeq[ans++]=j;
        last=x+1;
    }
    return ans;
}

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

int countReplacement(int n, int inputSeq[]){
    const int MOD=1e9+9;
    if(!valid(n,inputSeq)){
        return 0;
    }
    int c=0;
    for(int i=0;i<n;i++){
        if(inputSeq[i]>n) c++;
    }
    int replacementSeq[(int)3e5];
    int l=replacement(n,inputSeq,replacementSeq);
    int ans=1;
    for(int i=0;i<l-c;i++){
        ans=1LL*ans*c%MOD;
    }
    return ans;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 7 ms 2572 KB Output is correct
7 Correct 20 ms 4152 KB Output is correct
8 Correct 14 ms 4444 KB Output is correct
9 Correct 4 ms 1624 KB Output is correct
10 Correct 18 ms 5044 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 1 ms 344 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 7 ms 2396 KB Output is correct
7 Correct 21 ms 4152 KB Output is correct
8 Correct 14 ms 4444 KB Output is correct
9 Correct 5 ms 1628 KB Output is correct
10 Correct 17 ms 5104 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 11 ms 2364 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 27 ms 5224 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 1372 KB Output is correct
2 Correct 1 ms 1372 KB Output is correct
3 Correct 1 ms 1368 KB Output is correct
4 Correct 1 ms 1372 KB Output is correct
5 Correct 1 ms 1372 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 1372 KB Output is correct
2 Correct 1 ms 1372 KB Output is correct
3 Correct 1 ms 1372 KB Output is correct
4 Correct 1 ms 1372 KB Output is correct
5 Correct 1 ms 1372 KB Output is correct
6 Correct 1 ms 1372 KB Output is correct
7 Correct 1 ms 1372 KB Output is correct
8 Correct 1 ms 1312 KB Output is correct
9 Correct 1 ms 1216 KB Output is correct
10 Correct 1 ms 1372 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 1624 KB Output is correct
2 Correct 1 ms 1372 KB Output is correct
3 Correct 1 ms 1368 KB Output is correct
4 Correct 1 ms 1372 KB Output is correct
5 Correct 1 ms 1372 KB Output is correct
6 Correct 1 ms 1372 KB Output is correct
7 Correct 1 ms 1368 KB Output is correct
8 Correct 1 ms 1324 KB Output is correct
9 Correct 1 ms 1372 KB Output is correct
10 Correct 1 ms 1372 KB Output is correct
11 Correct 14 ms 5860 KB Output is correct
12 Correct 21 ms 6344 KB Output is correct
13 Correct 15 ms 3676 KB Output is correct
14 Correct 15 ms 5720 KB Output is correct
15 Correct 15 ms 3016 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 2392 KB Output is correct
2 Correct 1 ms 2648 KB Output is correct
3 Correct 1 ms 2396 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 2392 KB Output is correct
2 Correct 1 ms 2396 KB Output is correct
3 Correct 1 ms 2396 KB Output is correct
4 Correct 1 ms 2400 KB Output is correct
5 Incorrect 1 ms 2396 KB Output isn't correct
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 2392 KB Output is correct
2 Correct 1 ms 2396 KB Output is correct
3 Correct 1 ms 2488 KB Output is correct
4 Correct 1 ms 2396 KB Output is correct
5 Incorrect 1 ms 2396 KB Output isn't correct
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 2652 KB Output is correct
2 Correct 1 ms 2396 KB Output is correct
3 Correct 1 ms 2396 KB Output is correct
4 Correct 1 ms 2396 KB Output is correct
5 Incorrect 1 ms 2396 KB Output isn't correct
6 Halted 0 ms 0 KB -