제출 #467777

#제출 시각아이디문제언어결과실행 시간메모리
467777Carmel_Ab1Gondola (IOI14_gondola)C++17
75 / 100
30 ms2628 KiB
#include <bits/stdc++.h> using namespace std; typedef vector<int> vi; typedef long long ll; #include "gondola.h" //#include "grader.cpp" #define pb push_back #define all(x) x.begin(),x.end() #define print(x) {for(auto it:x){cout << it << " "; }cout << "\n";} int valid(int n, int inputSeq[]){ vi a(n); for(int i=0; i<n; i++) a[i]=inputSeq[i]; vi s(a); sort(all(s)); for(int i=0; i<n-1; i++) if(s[i]==s[i+1]) return 0; int f=-1; for(int i=0; i<n; i++) if(a[i]<=n) f=i; for(int i=0; i<n; i++) if(a[i]<=0) return 0; if(f==-1)return 1; for(int i=0,j=a[f]; i<n; j=((j%n) +1),i++){ int cur=a[(i+f)%n]; if(cur!=j && cur<=n) return 0; } return 1; } int replacement(int n, int a[], int rep[]){ vi ans,org(n+1); int f=-1; for(int i=0; i<n; i++) if(a[i]<=n) f=i; if(f==-1) for(int i=0; i<n; i++) org[i]=i+1; else for(int i=0,j=a[f]; i<n; j=((j%n) +1),i++){ int cur=a[(i+f)%n]; org[(i+f)%n]=j; } vector<pair<int,int>>s; for(int i=0; i<n; i++) s.push_back({a[i],i}); sort(all(s)); vector<bool>has(250001); for(int i=0; i<n; i++) has[a[i]]=1; for(int i=0,j=n+1; i<n; i++){ if(s[i].first<=n)continue; ans.pb(org[s[i].second]); while(!has[j]){ has[j]=1; ans.pb(j); j++; } j++; } for(int i=0; i<ans.size(); i++) rep[i]=ans[i]; return ans.size(); } ll power(ll a,ll b,ll m){ if(b==0)return 1; else if(b==1)return a; ll r=power(a,b/2,m); ll ans=(r*r)%m; if(b%2)ans=(ans*a)%m; return ans; } int countReplacement(int n, int inputSeq[]){ assert(valid(n,inputSeq)); if(!valid(n,inputSeq)) return 0; vector<ll> a(n); for(int i=0; i<n ;i++) a[i]=inputSeq[i]; sort(all(a)); vector<bool>has(250001); for(int i=0; i<n; i++){ assert(a[i]<=has.size()); has[a[i]]=1; } const ll m=1e9+9; ll ans=1,cnt=0; for(int i=0; i<n; i++) if(a[i]>n) cnt++; for(ll i=n+1; cnt>1; i++){ if(has[i]) cnt--; else ans=(ans*cnt)%m; } return int(ans); }

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

gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:47:17: warning: unused variable 'cur' [-Wunused-variable]
   47 |             int cur=a[(i+f)%n];
      |                 ^~~
gondola.cpp:68:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   68 |     for(int i=0; i<ans.size(); i++)
      |                  ~^~~~~~~~~~~
In file included from /usr/include/c++/10/cassert:44,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33,
                 from gondola.cpp:1:
gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:90:20: warning: comparison of integer expressions of different signedness: '__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type' {aka 'long long int'} and 'std::vector<bool>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   90 |         assert(a[i]<=has.size());
#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...