답안 #922972

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
922972 2024-02-06T11:23:12 Z allin27x 곤돌라 (IOI14_gondola) C++17
60 / 100
27 ms 5220 KB
#include <bits/stdc++.h>
using namespace std;
#include "gondola.h"

#define int long long
const int mod = 1e9+7;

signed valid(signed n, signed S[]){
	set<int> s; for(int i=0; i<n; i++) s.insert(S[i]); if (s.size()<n) return 0;
	int ind = -1;
	for (int i=0; i<n; i++) if (S[i] <= n) {ind = i; break;}
	if (ind == -1) return 1;
	int t = S[ind];
	for (int i=ind+1; i!=ind; i++, i%=n){
		t++; if (t==n+1) t = 1;
		if (S[i] <= n && S[i] != t) return 0;
	}
	return 1;
}



signed replacement(signed n, signed S[], signed replacementSeq[]){
	int ind = -1;
	for (int i=0; i<n; i++) if (S[i] <= n) {ind = i; break;}
	int bg = -1; map<int,int> tr; 

	if (ind == -1){
		for (int i=0; i<n; i++){
			tr[S[i]] = i+1; bg= max(bg,(int)S[i]);
		}
	} else {
		int t = S[ind];
		for (int i=(ind+1)%n; i!=ind; i++, i%=n){
			t++; if (t==n+1) t = 1;
			if (S[i] > n) {tr[S[i]] = t; bg=max(bg,(int)S[i]);}
		}
	}
	if (bg==-1) return 0;
	int bgm = tr[bg];
	tr.erase(bg);
	for (int i=n+1; i<=bg; i++){
		if (tr.count(i)){
			replacementSeq[i-(n+1)] = tr[i];
		} else {
			replacementSeq[i-(n+1)] = bgm;
			bgm = i; 
		}
	}
	return (bg-(n+1) + 1);

}

signed countReplacement(signed n, signed S[]){
	if (!valid(n,S)) return 0;
	int res = 1;
	set<int>tr; for (int i=0; i<n; i++) tr.insert(S[i]);
	int bigger = 0;
	for (int x: tr) if (x>=n+1) bigger++;
	if (!bigger) return 1;
	if (bigger == n) res *= n;
	for (int i=n+1; i < 25e4+6; i++){
		if (tr.count(i)){
			bigger--; if (!bigger) return res;
		} else {
			res *= bigger; res %= mod;
		}
	}
	return res;
}

Compilation message

gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:9:65: warning: comparison of integer expressions of different signedness: 'std::set<long long int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
    9 |  set<int> s; for(int i=0; i<n; i++) s.insert(S[i]); if (s.size()<n) return 0;
      |                                                         ~~~~~~~~^~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 396 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 444 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 1 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 9 ms 2648 KB Output is correct
7 Correct 22 ms 4124 KB Output is correct
8 Correct 18 ms 4436 KB Output is correct
9 Correct 5 ms 1628 KB Output is correct
10 Correct 20 ms 4956 KB Output is correct
# 결과 실행 시간 메모리 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 Correct 0 ms 348 KB Output is correct
6 Correct 8 ms 2396 KB Output is correct
7 Correct 21 ms 4092 KB Output is correct
8 Correct 15 ms 4444 KB Output is correct
9 Correct 6 ms 1628 KB Output is correct
10 Correct 19 ms 4956 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 10 ms 2396 KB Output is correct
14 Correct 1 ms 348 KB Output is correct
15 Correct 27 ms 5220 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 1 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 416 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 1 ms 600 KB Output is correct
7 Correct 1 ms 600 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
# 결과 실행 시간 메모리 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 1 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 604 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 504 KB Output is correct
11 Correct 9 ms 1204 KB Output is correct
12 Correct 7 ms 1472 KB Output is correct
13 Correct 22 ms 3324 KB Output is correct
14 Correct 6 ms 1116 KB Output is correct
15 Correct 23 ms 3420 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
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 344 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 0 ms 344 KB Output is correct
7 Incorrect 1 ms 348 KB Output isn't correct
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 0 ms 344 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Incorrect 0 ms 604 KB Output isn't correct
8 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 1 ms 348 KB Output is correct
4 Correct 0 ms 344 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 0 ms 500 KB Output is correct
7 Incorrect 1 ms 604 KB Output isn't correct
8 Halted 0 ms 0 KB -