제출 #32238

#제출 시각아이디문제언어결과실행 시간메모리
32238dqhungdlBoat (APIO16_boat)C++14
31 / 100
216 ms22328 KiB
#include <bits/stdc++.h> using namespace std; typedef pair<int,int> ii; const int mod=1e9+7; ii Seg[505]; int n,Count=0,res=0,a[505],b[505],f[505],c[1000005],tree[1000005]; int64_t sum=0; vector<ii> V; void Sub1() { for(int i=1; i<=n; i++) { f[i]=1; for(int j=1; j<i; j++) if(a[j]<a[i]) f[i]=(f[i]+f[j])%mod; res=(res+f[i])%mod; } cout<<res; } void Update(int idx,int data) { while(idx<=sum) { tree[idx]=(tree[idx]+data)%mod; idx+=idx&-idx; } } int Query(int idx) { int rs=0; while(idx>0) { rs=(rs+tree[idx])%mod; idx-=idx&-idx; } return rs; } void Sub2() { int Count=0; for(int i=1; i<=n; i++) for(int j=b[i];j>=a[i];j--) V.push_back(ii(j,++Count)); sort(V.begin(),V.end()); c[V[0].second]=1; Count=1; for(int i=1;i<V.size();i++) if(V[i].first>V[i-1].first) c[V[i].second]=++Count; else c[V[i].second]=Count; for(int i=1; i<=sum; i++) { int tmp=(Query(c[i]-1)+1)%mod; Update(c[i],tmp); res=(res+tmp)%mod; } cout<<res; } int main() { ios_base::sync_with_stdio(false); //freopen("BOAT.INP","r",stdin); cin>>n; bool check=false; for(int i=1; i<=n; i++) { cin>>a[i]>>b[i]; if(a[i]!=b[i]) check=true; sum+=b[i]-a[i]+1; } if(check==false) Sub1(); else if(sum<=1e6) Sub2(); }

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

boat.cpp: In function 'void Sub2()':
boat.cpp:53:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=1;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...