Submission #238263

#TimeUsernameProblemLanguageResultExecution timeMemory
238263PbezzPilot (NOI19_pilot)C++14
78 / 100
1085 ms11116 KiB
#include <bits/stdc++.h> using namespace std; #define loop(i,n) for (ll i = 0; i < n; i++) #define ll long long #define INF 1e9+5 #define MAXN 1000005 #define MOD 1000000000007 #define pb push_back #define mp make_pair typedef pair<ll,ll> pii; vector<ll>torre; vector<ll>plane; ll n; bool sI(){ for(ll i=1;i<n;i++){ if(torre[i]<=torre[i-1])return false; } return true; } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); ll q,y,k,ans,maxi=0; cin>>n>>q; loop(i,n){ cin>>k; torre.pb(k); } loop(i,q){ cin>>k; plane.pb(k); maxi=max(maxi,k); } if(sI()){//bs loop(i,q){ y=plane[i]; k=upper_bound(torre.begin(),torre.end(),y)-torre.begin(); ans=(k*(k+1))/2; printf("%lld\n",ans); } }else{ ll dp[maxi+1]; memset(dp,-1,sizeof(dp)); loop(i,q){ y=plane[i]; if(dp[y]==-1){ ans=0; ll cur=0; for(ll j=0;j<n;j++){ while(j<n && torre[j]<=y){j++; cur++;} ans+=(cur*(cur+1))/2; cur=0; } dp[y]=ans; } printf("%lld\n",dp[plane[i]]); } } return 0; }
#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...