제출 #511450

#제출 시각아이디문제언어결과실행 시간메모리
511450AdamGS곤돌라 (IOI14_gondola)C++14
100 / 100
54 ms5956 KiB
#include "gondola.h" #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; #define rep(a, b) for(int a = 0; a < (b); ++a) #define st first #define nd second #define pb push_back #define all(a) a.begin(), a.end() const ll MOD=1e9+9; ll pot(ll a, ll b) { ll ans=1; while(b) { if(b&1) ans=(ans*a)%MOD; a=(a*a)%MOD; b/=2; } return ans; } int valid(int n, int T[]) { rep(i, n) --T[i]; map<int,int>mp; rep(i, n) { ++mp[T[i]]; if(mp[T[i]]>1) return 0; } rep(i, n) if(T[i]<n) { rep(j, n) if(T[(i+j)%n]<n) { if(T[(i+j)%n]!=(T[i]+j)%n) return 0; } return 1; } return 1; } int replacement(int n, int T[], int ans[]) { rep(i, n) if(T[i]<=n) { int P[n]; rep(j, n) P[(j+T[i]-1-i+n)%n]=T[j]; rep(j, n) T[j]=P[j]; break; } int ma=0; rep(i, n) ma=max(ma, T[i]); rep(i, n) if(T[i]>n && T[i]!=ma) ans[T[i]-n-1]=i+1; rep(i, n) if(T[i]==ma) { int lst=i+1; rep(j, ma-n) if(!ans[j]) { ans[j]=lst; lst=j+n+1; } } return ma-n; } int countReplacement(int n, int T[]) { if(!valid(n, T)) return 0; vector<ll>V; V.pb(0); rep(i, n) if(T[i]>=n) V.pb(T[i]-n+1); sort(all(V)); ll ans=1; for(ll i=1; i<V.size(); ++i) ans=(ans*pot(V.size()-i, V[i]-V[i-1]-1))%MOD; int p=0; rep(i, n) if(T[i]>=n) ++p; if(p==n) ans=(ans*n)%MOD; return ans; }

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

gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:62:15: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   62 |  for(ll i=1; i<V.size(); ++i) ans=(ans*pot(V.size()-i, V[i]-V[i-1]-1))%MOD;
      |              ~^~~~~~~~~
#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...