답안 #953574

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
953574 2024-03-26T09:09:05 Z irmuun 곤돌라 (IOI14_gondola) C++17
60 / 100
32 ms 5212 KB
#include<bits/stdc++.h>
#include "gondola.h"

using namespace std;

#define ll long long
#define pb push_back
#define ff first
#define ss second
#define all(s) s.begin(),s.end()
#define rall(s) s.rbegin(),s.rend()

int valid(int n, int in[]){
    int mn=n+1,pos=-1;
    map<int,bool>used;
    for(int i=0;i<n;i++){
        if(used[in[i]]){
            return 0;
        }
        used[in[i]]=true;
        if(in[i]<=n){
            if(in[i]<mn){
                mn=in[i];
                pos=i;
            }
        }
    }
    if(pos==-1) return 0;
    for(int i=0;i<n;i++){
        int p=(pos+i)%n;
        if(in[p]<=n){
            if(in[p]!=mn+i) return 0;
        }
    }
    return 1;
}
int replacement(int n, int gon[], int rep[]){
    int mx=0;
    vector<pair<int,int>>v;
    int a[n];
    iota(a,a+n,1);
    int mn=n+1,pos=-1;
    for(int i=0;i<n;i++){
        if(gon[i]<=n){
            if(gon[i]<mn){
                mn=gon[i];
                pos=i;
            }
        }
    }
    if(pos>-1){
        for(int i=0;i<n;i++){
            a[(i+pos)%n]=mn;
            mn=mn+1;
            if(mn>n) mn=1;
        }
    }
    for(int i=0;i<n;i++){
        if(gon[i]>n){
            v.pb({gon[i],i});
        }
    }
    sort(all(v));
    for(int i=0;i<v.size();i++){
    }
    int l=n+1,cur=0;
    for(int i=0;i<v.size();i++){
        int bef=a[v[i].ss];
        for(;l<=v[i].ff;l++){
            rep[cur++]=bef;
            bef=l;
        }
    }
    return cur;
}
const int mod=1e9+9;
int binpow(int a,int b){
    int res=1;
    while(b){
        if(b&1){
            res=1ll*res*a%mod;
        }
        a=1ll*a*a%mod;
        b=b>>1;
    }
    return res;
}
int countReplacement(int n, int in[]){
    int ans=valid(n,in);
    if(ans==0) return 0;
    bool flag=false;
    for(int i=0;i<n;i++){
        if(in[i]<=n){
            flag=true;
        }
    }
    if(!flag){
        ans=n;
    }
    vector<int>v;
    for(int i=0;i<n;i++){
        if(in[n]>n){
            v.pb(in[n]);
        }
    }
    int left=n-v.size(),last=n;
    sort(all(v));
    for(int i=0;i<v.size();i++){
        ans=1ll*ans*binpow(left,v[i]-last-1)%mod;
        last=v[i];
        left--;
    }
    return ans;
}

Compilation message

gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:64:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   64 |     for(int i=0;i<v.size();i++){
      |                 ~^~~~~~~~~
gondola.cpp:67:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   67 |     for(int i=0;i<v.size();i++){
      |                 ~^~~~~~~~~
gondola.cpp:38:9: warning: unused variable 'mx' [-Wunused-variable]
   38 |     int mx=0;
      |         ^~
gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:108:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  108 |     for(int i=0;i<v.size();i++){
      |                 ~^~~~~~~~~
# 결과 실행 시간 메모리 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
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 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 1 ms 348 KB Output is correct
6 Correct 10 ms 2440 KB Output is correct
7 Correct 7 ms 1116 KB Output is correct
8 Correct 19 ms 4444 KB Output is correct
9 Correct 6 ms 1628 KB Output is correct
10 Correct 22 ms 5108 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 1 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 10 ms 2332 KB Output is correct
7 Correct 7 ms 1372 KB Output is correct
8 Correct 20 ms 4440 KB Output is correct
9 Correct 6 ms 1628 KB Output is correct
10 Correct 23 ms 4948 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 13 ms 2384 KB Output is correct
14 Correct 0 ms 444 KB Output is correct
15 Correct 32 ms 5212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 548 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 1 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 440 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 0 ms 448 KB Output is correct
4 Correct 0 ms 444 KB Output is correct
5 Correct 0 ms 448 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Correct 1 ms 344 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 0 ms 444 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 1 ms 344 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Correct 1 ms 348 KB Output is correct
11 Correct 6 ms 1372 KB Output is correct
12 Correct 7 ms 1412 KB Output is correct
13 Correct 11 ms 1732 KB Output is correct
14 Correct 6 ms 1372 KB Output is correct
15 Correct 16 ms 2380 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 344 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 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 Incorrect 0 ms 348 KB Output isn't correct
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 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 Incorrect 1 ms 444 KB Output isn't correct
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 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 Incorrect 0 ms 600 KB Output isn't correct
6 Halted 0 ms 0 KB -