제출 #1099272

#제출 시각아이디문제언어결과실행 시간메모리
1099272Luvidi곤돌라 (IOI14_gondola)C++17
55 / 100
12 ms2352 KiB
#include <bits/stdc++.h> #include "gondola.h" using namespace std; #define ll long long ll MOD=1e9+9; ll pm(ll a,ll b){ if(!b)return 1; ll c=pm(a*a%MOD,b/2); if(b%2)return a*c%MOD; return c; } int valid(int n, int a[]) { set<int> s; int sh=0; for(int i=0;i<n;i++){ if(a[i]>n){ if(s.count(a[i]))return 0; s.insert(a[i]); }else{ sh=i+1-a[i]; } } for(int i=0;i<n;i++){ int idx=i+sh; idx=(idx%n+n)%n; if(a[idx]<=n&&a[idx]!=i+1)return 0; } return 1; } //---------------------- int replacement(int n, int a[], int b[]) { int a2[n]; vector<pair<int,int>> v; int sh=0; for(int i=0;i<n;i++){ if(a[i]>n){ v.push_back({a[i],i}); }else{ sh=i+1-a[i]; } } for(int i=0;i<n;i++){ int idx=i+sh; idx=(idx%n+n)%n; a2[idx]=i+1; } sort(begin(v),end(v)); int last=n,cnt=0; for(auto[x,i]:v){ b[cnt++]=a2[i]; last++; while(last<x){ b[cnt++]=last++; } } return cnt; } //---------------------- int countReplacement(int n, int a[]) { set<int> s; int sh=0; for(int i=0;i<n;i++){ if(a[i]>n){ if(s.count(a[i]))return 0; s.insert(a[i]); }else{ sh=i+1-a[i]; } } for(int i=0;i<n;i++){ int idx=i+sh; idx=(idx%n+n)%n; if(a[idx]<=n&&a[idx]!=i+1)return 0; } vector<int> v; for(int i:s)v.push_back(i); sort(begin(v),end(v)); int last=n; ll ans=1; for(int i=0;i<v.size();i++){ last=v[i]; v[i]-=last; ans=ans*pm(v.size()-i,v[i]-1)%MOD; } return ans; }

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

gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:91:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   91 |     for(int i=0;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...