# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
780412 | fatemetmhr | 곤돌라 (IOI14_gondola) | C++17 | 17 ms | 2284 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
// ~ Be Name Khoda ~ //
#include "gondola.h"
#include <bits/stdc++.h>
//#pragma GCC optimize ("O3")
//#pragma GCC target("avx2")
//#pragma GCC optimize("unroll-loops,Ofast")
using namespace std;
typedef long long ll;
#define pb push_back
#define mp make_pair
#define all(x) x.begin(), x.end()
#define fi first
#define se second
const int maxn = 1e6 + 10;
const int maxn5 = 5e5 + 10;
const int maxnt = 1.2e6 + 10;
const int maxn3 = 1e3 + 10;
const int mod = 1e9 + 7;
const ll inf = 1e18;
vector <int> av, num;
int valid(int n, int a[])
{
for(int i =0 ; i < n; i++){
a[i]--;
num.pb(a[i]);
}
sort(all(num));
num.resize(unique(all(num)) - num.begin());
if(num.size() != n)
return 0;
for(int i = 0; i < n; i++) if(a[i] < n)
av.pb(i);
int mnid = 0;
if(av.empty())
return 1;
for(int i = 0; i < av.size(); i++) if(a[av[i]] < a[av[mnid]])
mnid = i;
int keep = mnid;
//cout << av.size() << endl;
for(int i = 0; i < av.size(); i++){
int nxt = mnid + 1;
if(nxt == av.size())
nxt = 0;
int u = av[mnid], v = av[nxt];
//cout << "here " << mnid << ' ' << nxt << ' ' << u << ' ' << v << endl;
if((nxt != keep && a[u] > a[v]) || (n + a[v] - a[u]) % n != (v - u + n) % n)
return 0;
mnid = nxt;
}
return 1;
}
//----------------------
int replacement(int n, int a[], int ret[])
{
vector <pair<int, int>> av;
for(int i = 0; i < n; i++)
a[i]--;
int mx = 0, base = -1;
for(int i = 0; i < n; i++){
if(a[i] > a[mx])
mx = i;
if(a[i] < n)
base = i;
}
//cout << a[mx] << ' ' << n << endl;
if(a[mx] == n - 1)
return 0;
for(int i = 0; i < n; i++) if(a[i] >= n && i != mx)
av.pb({a[i], i});
sort(all(av));
int ind = 0;
int pt = 0;
int mxx = a[mx];
a[mx] = (base == -1 ? mx : ((n + mx - base) + a[base]) % n);
for(int x = n; x <= mxx; x++){
if(ind < av.size() && av[ind].fi == x){
ret[pt++] = 1 + (base == -1 ? av[ind].se : ((n + av[ind].se - base) + a[base]) % n);
ind++;
}
else{
ret[pt++] = 1 + a[mx];
a[mx] = x;
}
//cout << pt << ' ' << x << endl;
}
return pt;
}
//----------------------
int countReplacement(int n, int inputSeq[])
{
return -3;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |