제출 #162047

#제출 시각아이디문제언어결과실행 시간메모리
162047nafis_shifatGondola (IOI14_gondola)C++14
60 / 100
60 ms4728 KiB
#include "gondola.h" #include<bits/stdc++.h> #define pii pair<int,int> #define ll long long using namespace std; const ll mod=1e9+7; ll bigmod(ll a,ll b) { if(b==0)return 1; ll mid=b/2; ll c=bigmod(a,mid); if(b%2==0)return (c*c)%mod; c=(c*c)%mod; return (a*c)%mod; } int valid(int n, int inputSeq[]) { map<int,int> mp; int st=-1; for(int i=0;i<n;i++) { if(mp[inputSeq[i]]==1)return 0; mp[inputSeq[i]]=1; if(inputSeq[i]<=n && st==-1) st=i; } if(st==-1)return 1; int kb=inputSeq[st]+1; for(int i=st+1;i<n;i++) { if(kb>n)kb=1; if(inputSeq[i]!=kb++ && inputSeq[i]<=n)return 0; } for(int i=0;i<st;i++) { if(kb>n)kb=1; if(inputSeq[i]!=kb++ && inputSeq[i]<=n)return 0; } return 1; } //---------------------- int replacement(int n, int gondolaSeq[], int replacementSeq[]) { int st=-1; vector<pii> v; for(int i=0;i<n;i++) { if(gondolaSeq[i]<=n) { st=i; break; } } if(st==-1) { for(int i=0;i<n;i++)if(gondolaSeq[i]>n)v.push_back({gondolaSeq[i],i+1}); } else { int s; if(gondolaSeq[st]>st)s=gondolaSeq[st]-st; else s=n-(st-gondolaSeq[st]); for(int i=0;i<n;i++) { if(s==n+1)s=1; if(gondolaSeq[i]>n) { v.push_back({gondolaSeq[i],s}); } s++; } } sort(v.begin(),v.end()); int li=0; int tr=n+1; for(int i=0;i<v.size();i++) { replacementSeq[li++]=v[i].second; while(tr<v[i].first) { replacementSeq[li++]=tr++; } tr++; } return li; } //---------------------- int countReplacement(int n, int inputSeq[]) { if(!valid(n,inputSeq))return 0; int df=0; vector<ll> v; for(int i=0;i<n;i++) if(inputSeq[i]<=n)df=1; else v.push_back(inputSeq[i]); sort(v.begin(),v.end()); ll last=n; ll sz=v.size(); ll res=1; if(df==0)res=n; for(int i=0;i<sz;i++) { ll dd=v[i]-1-last; res*=bigmod(sz-i,dd); res%=mod; last=v[i]; } return res; }

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

gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:92:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     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...