제출 #50718

#제출 시각아이디문제언어결과실행 시간메모리
50718mirbek01곤돌라 (IOI14_gondola)C++17
55 / 100
28 ms3120 KiB
#include "gondola.h" #include <bits/stdc++.h> using namespace std; const int N = 3e5 + 2; int valid(int n, int inputSeq[]) { vector <pair <int, int> > v; for(int i = 0; i < n; i ++) if(inputSeq[i] <= n) v.push_back({inputSeq[i], i + 1}); sort(v.begin(), v.end()); for(int i = 1; i < v.size(); i ++){ int ab = v[i].first - v[i - 1].first, ds; if(v[i].second > v[i - 1].second){ ds = v[i].second - v[i - 1].second; } else { ds = v[i].second + (n - v[i - 1].second); } if(ds != ab) return 0; } sort(inputSeq, inputSeq + n); for(int i = 1; i < n; i ++){ if(inputSeq[i] == inputSeq[i - 1]) return 0; } return 1; } //---------------------- int used[N]; int replacement(int n, int gondolaSeq[], int rp[]) { int pos = 1, mx = 0, sz = 0, id = 0; vector <int> v, nm(n); vector < pair <int, int> > d; for(int i = 0; i < n; i ++){ mx = max(mx, gondolaSeq[i]); used[gondolaSeq[i]] = 1; if(gondolaSeq[i] > n){ d.push_back({gondolaSeq[i], i}); } else pos = gondolaSeq[i], id = i; } for(int i = n + 1; i <= mx; i ++){ if(!used[i]) v.push_back(i); } for(int i = 0; i < n; i ++){ nm[id] = pos; pos ++; id ++; if(pos > n) pos = 1; if(id >= n) id = 0; } sort(d.begin(), d.end()); int cur = n + 1; for(int i = 0; i < d.size(); i ++){ int ps = nm[d[i].second]; rp[sz ++] = ps; while(cur < d[i].first){ if(!used[cur]) rp[sz ++] = cur; cur ++; } } return sz; } //---------------------- int countReplacement(int n, int inputSeq[]) { vector <pair <int, int> > v; for(int i = 0; i < n; i ++) if(inputSeq[i] <= n) v.push_back({inputSeq[i], i + 1}); sort(v.begin(), v.end()); for(int i = 1; i < v.size(); i ++){ int ab = v[i].first - v[i - 1].first, ds; if(v[i].second > v[i - 1].second){ ds = v[i].second - v[i - 1].second; } else { ds = v[i].second + (n - v[i - 1].second); } if(ds != ab) return 0; } sort(inputSeq, inputSeq + n); for(int i = 1; i < n; i ++){ if(inputSeq[i] == inputSeq[i - 1]) return 0; } memset(used, 0, sizeof(used)); long long ans = 1, cnt = 0, mx = 0, mod = 1e9 + 7; for(int i = 0; i < n; i ++){ used[ inputSeq[i] ] = 1; if(inputSeq[i] > n) cnt ++; if(mx < inputSeq[i]) mx = inputSeq[i]; } for(int i = n + 1; i < mx; i ++){ if(used[ inputSeq[i] ]){ cnt --; continue; } ans = (ans * cnt) % mod; } return ans; }

컴파일 시 표준 에러 (stderr) 메시지

gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:14:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
       for(int i = 1; i < v.size(); i ++){
                      ~~^~~~~~~~~~
gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:61:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
       for(int i = 0; i < d.size(); i ++){
                      ~~^~~~~~~~~~
gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:82:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
       for(int i = 1; i < v.size(); i ++){
                      ~~^~~~~~~~~~
#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...