제출 #238205

#제출 시각아이디문제언어결과실행 시간메모리
238205Fasho곤돌라 (IOI14_gondola)C++14
100 / 100
39 ms3328 KiB
#include <bits/stdc++.h> #include "gondola.h" #define N 1000005 #define ll long long int #define MP make_pair #define pb push_back #define ppb pop_back #define sp " " #define endl "\n" #define fi first #define se second #define ii pair<int,int> #define lli pair<ll,ll> #define fast cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(false) #define fast2 freopen ("badhair.gir","r",stdin);freopen ("badhair.cik","w",stdout); #define mod 1000000009 #define fs(x,y) for(ll i=1;i<=y;i++) cin>>x[i] #define fo(i,x,y) for(ll i=x;i<=y;i++) #define INF 1000000000005 #define ull unsigned long long int using namespace std; int ar[N]; int valid(int n, int inputSeq[]) { ll x=-1; // fo(i,0,n-1) // inputSeq[i]=ar[i]; fo(i,1,n) { // cout<<inputSeq[i-1]<<sp; ar[i]=inputSeq[i-1]; } sort(ar+1,ar+n+1); fo(i,2,n) if(ar[i-1]==ar[i]) return 0; fo(i,1,n) ar[i]=inputSeq[i-1]; // cout<<endl; fo(i,1,n) if(ar[i]<=n) { x=i; break; } if(x==-1) return 1; // fo(i,1,n) // cout<<ar[i]<<sp; // cout<<endl; // cout<<x<<endl; int flag=0; fo(i,x+1,n) { if(ar[i]<=n) { if((i-x+ar[x])%n!=ar[i]%n) return 0; } } return 1; } //---------------------- ll tut[N],tutmac[N]; int replacement(int n, int gondolaSeq[], int replacementSeq[]) { fo(i,1,n) ar[i]=gondolaSeq[i-1]; ar[0]=0; ll mki=0; fo(i,1,n) { tut[ar[i]]=i; if(ar[i]>ar[mki]) mki=i; } ll cnt=-1; ll l=ar[mki]-n; fo(i,1,n) tutmac[i]=ar[i]; ll x=0; ar[0]=0; fo(i,1,n) if(ar[i]<=n) { x=i; break; } // fo(i,1,n) // cout<<ar[i]<<sp; // cout<<endl; fo(i,x+1,n) { ar[i]=ar[i-1]+1; ar[i]%=n; if(ar[i]<=0) ar[i]+=n; } for(int i=x-1;i>=1;i--) { ar[i]=ar[i+1]-1; ar[i]%=n; if(ar[i]<=0) ar[i]+=n; } // fo(i,1,n) // cout<<ar[i]<<sp; // cout<<endl; // cout<<mki<<endl; fo(i,n+1,tutmac[mki]) { // cout<<i<<sp<<tut[i]<<sp<<ar[tut[i]]<<endl; if(tut[i]) { replacementSeq[i-n-1]=ar[tut[i]]; ar[tut[i]]=i; } else { replacementSeq[i-n-1]=ar[mki]; ar[mki]=i; } } // cout<<l<<endl; // fo(i,0,l-1) // cout<<replacementSeq[i]<<sp; // cout<<endl; if(l<0) return -1; return l; } ll carp(ll x,ll y) { x%=mod; x*=y%mod; x%=mod; while(x<0) x+=mod; return x%mod; } ll fp(ll a,ll b) { if(b==0) return 1; ll x=fp(a,b/2); x=carp(x,x); if(b%2==1) x=carp(x,a); return x%mod; } //---------------------- int countReplacement(int n, int inputSeq[]) { // fo(i,0,n-1) // inputSeq[i]=ar[i]; if(!valid(n,inputSeq)) return 0; fo(i,1,n) ar[i]=inputSeq[i-1]; sort(ar+1,ar+n+1); ll sum=1; ar[0]=n; int flag=0; // fo(i,1,n) // cout<<ar[i]<<sp; // cout<<endl; fo(i,1,n) { if(ar[i]<=n) { flag=1; continue; } ll x=max(n,ar[i-1]); // cout<<ar[i]<<sp<<fp(n-i+1,ar[i]-x)<<sp<<x<<endl; // cout<<n-i+1<<sp<<ar[i]-x<<sp<<fp(n-i+1,ar[i]-x)<<endl; sum=carp(sum,fp(n-i+1,ar[i]-x-1)); } if(flag==0) sum=carp(sum,n); return sum; } // int bos[N]; // int main() // { // fast; // ll n; // cin>>n; // fo(i,0,n-1) // cin>>ar[i]; // // fo(i,0,n-1) // // cout<<ar[i]<<sp; // cout<<endl; // cout<<countReplacement(n,bos); // }

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

gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:58:6: warning: unused variable 'flag' [-Wunused-variable]
  int flag=0;
      ^~~~
gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:18:19: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
 #define fo(i,x,y) for(ll i=x;i<=y;i++)
                   ^
gondola.cpp:77:4: note: in expansion of macro 'fo'
    fo(i,1,n)
    ^~
gondola.cpp:79:5: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
     ar[0]=0;
     ^~
gondola.cpp:88:7: warning: unused variable 'cnt' [-Wunused-variable]
    ll cnt=-1;
       ^~~
#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...