제출 #1301446

#제출 시각아이디문제언어결과실행 시간메모리
1301446yusifmFountain (eJOI20_fountain)C++20
30 / 100
293 ms589824 KiB
#pragma GCC optimize("O3") #include <bits/stdc++.h> #define ll long long #define str string #define pb push_back #define pf push_front #define in insert #define all(v) v.begin(),v.end() #define fastIO ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); const int sz=1000000,INF=1000000000; using namespace std; void solve() { ll n,m,num1,num2,Num1,Num2,index,idx,ans; cin>>n>>m; vector<ll>nums1,nums2; vector<vector<ll>>prefs(n+1,vector<ll>(n+1)); for(int i=0;i<n;i++) { cin>>num1>>num2; nums1.pb(num1),nums2.pb(num2); } for(int i=0;i<n;i++) { prefs[i+1][i+1]=nums2[i],index=i+1; while(index<n) { if(nums1[index-1]>=nums1[index]) { idx=index-1; while(index<n && nums1[index]<=nums1[idx]) { prefs[i+1][index+1]=prefs[i+1][idx+1],index++; } } else { prefs[i+1][index+1]=prefs[i+1][index]+nums2[index],index++; } } } for(int i=0;i<m;i++) { cin>>Num1>>Num2; if(prefs[Num1][n]<Num2) { ans=0; } else { for(int j=1;j<=n;j++) { if(prefs[Num1][j]>=Num2) { ans=j; break; } } } cout<<ans<<"\n"; } } int main() { fastIO; ll t=1; //cin>>t; while(t--) { solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...