제출 #385853

#제출 시각아이디문제언어결과실행 시간메모리
385853mehrdad_sohrabi곤돌라 (IOI14_gondola)C++14
40 / 100
22 ms1784 KiB
// Black lives matter #include <bits/stdc++.h> #include "gondola.h" using namespace std; typedef long long int ll; typedef complex<double> point; typedef long double ld; #define pb push_back #define pii pair < ll , ll > #define F first #define S second //#define endl '\n' #define int long long #define sync ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0) #pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math") #define kill(x) return cout<<x<<'\n', 0; const int N=25e4+10; ll mod=1e9+9; int32_t valid(int32_t n, int32_t input[]){ ll id=-1; for (int i=0;i<n;i++){ if (input[i]<=n){ id=i; } } ll z=input[id]-id+n; z%=n; for (int i=0;i<n;i++){ if (input[i]<=n){ ll f=input[i]-i+n; f%=n; if (f!=z) return 0; } } vector <int> a; for (int i=0;i<n;i++){ a.pb(input[i]); } sort(a.begin(),a.end()); for (int i=1;i<a.size();i++){ if (a[i]==a[i-1]) return 0; } return 1; } int32_t replacement(int32_t n, int32_t gondolaSeq[], int32_t replacementSeq[]){ return 0; } int32_t countReplacement(int32_t n, int32_t input[]){ ll id=-1; for (int i=0;i<n;i++){ if (input[i]<=n){ id=i; } } ll z=input[id]-id+n; z%=n; for (int i=0;i<n;i++){ if (input[i]<=n){ ll f=input[i]-i+n; f%=n; if (f!=z) return 0; } } vector <int> a; for (int i=0;i<n;i++){ a.pb(input[i]); } sort(a.begin(),a.end()); for (int i=1;i<a.size();i++){ if (a[i]==a[i-1]) return 0; } ll ans=1; z=a.back(); ll cnt=0; while(z>n){ if (a.back()==z){ a.pop_back(); cnt++; } else{ ans*=cnt; ans%=mod; } z--; } if (id==-1){ for (int i=1;i<=n;i++){ ans*=i; ans%=mod; } } return ans; } /* int32_t in[N]; int32_t main(){ ll n; cin >> n; for (int i=1;i<=n;i++){ cin >> in[i-1]; } kill(countReplacement(n,in)); } */ /* int gondolaSequence[100001]; int replacementSequence[250001]; int32_t main() { int i, n, tag; int nr; assert(scanf("%d", &tag)==1); assert(scanf("%d", &n)==1); for(i=0;i< n;i++) assert( scanf("%d", &gondolaSequence[i]) ==1); switch (tag){ case 1: case 2: case 3: printf("%d\n", valid(n, gondolaSequence)); break; case 4: case 5: case 6: nr = replacement(n, gondolaSequence, replacementSequence); printf("%d ", nr); if (nr > 0) { for (i=0; i<nr-1; i++) printf("%d ", replacementSequence[i]); printf("%d\n", replacementSequence[nr-1]); } else printf("\n"); break; case 7: case 8: case 9: case 10: printf("%d\n", countReplacement(n, gondolaSequence)); break; } return 0; } */

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

gondola.cpp: In function 'int32_t valid(int32_t, int32_t*)':
gondola.cpp:40:19: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |     for (int i=1;i<a.size();i++){
      |                  ~^~~~~~~~~
gondola.cpp: In function 'int32_t countReplacement(int32_t, int32_t*)':
gondola.cpp:71:19: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   71 |     for (int i=1;i<a.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...