Submission #894913

#TimeUsernameProblemLanguageResultExecution timeMemory
894913adkjtPilot (NOI19_pilot)C++14
100 / 100
582 ms100644 KiB
#include<bits/stdc++.h> using namespace std; #define f first #define s second #define ll long long vector<int> g[1111111]; int a[1111111],vis[1111111],l[1111111],r[1111111]; long long ans[1111111],ind[1111111]; int main() { int n,q,hmx=0; scanf("%d %d",&n,&q); for(int i=1;i<=n;i++) ind[i]=ind[i-1]+i; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); hmx=max(hmx,a[i]); g[a[i]].push_back(i); } //s.insert({0,0}); for(int i=1;i<=hmx;i++) { ans[i]=ans[i-1]; for(auto x:g[i]) { if(!vis[x-1]&&!vis[x+1]) { vis[x]++; l[x]=x,r[x]=x; ans[i]++; } else if(vis[x-1]&&!vis[x+1]) { vis[x]++; l[x]=l[x-1]; r[x]=x; r[l[x-1]]=r[x]; ans[i]-=ind[x-l[x]]; ans[i]+=ind[x-l[x]+1]; } else if(!vis[x-1]&&vis[x+1]) { vis[x]++; l[x]=x; r[x]=r[x+1]; l[r[x+1]]=l[x]; ans[i]-=ind[r[x]-x]; ans[i]+=ind[r[x]-x+1]; } else if(vis[x-1]&&vis[x+1]) { vis[x]++; l[x]=l[x-1]; r[x]=r[x+1]; l[r[x+1]]=l[x]; r[l[x-1]]=r[x]; ans[i]-=ind[x-l[x]]; ans[i]-=ind[r[x]-x]; ans[i]+=ind[r[x]-l[x]+1]; //printf("%lld %lld %lld\n",ind[x-l[x]],ind[r[x]-x],ind[r[x]-l[x]+1]); } } } for(int i=1;i<=q;i++) { int qu; scanf("%d",&qu); if(qu>hmx) qu=hmx; printf("%lld\n",ans[qu]); } /*for(int i=1;i<=hmx;i++) printf("%lld ",ans[i]);*/ return 0; }

Compilation message (stderr)

pilot.cpp: In function 'int main()':
pilot.cpp:12:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   12 |     scanf("%d %d",&n,&q);
      |     ~~~~~^~~~~~~~~~~~~~~
pilot.cpp:17:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   17 |         scanf("%d",&a[i]);
      |         ~~~~~^~~~~~~~~~~~
pilot.cpp:68:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   68 |         scanf("%d",&qu);
      |         ~~~~~^~~~~~~~~~
#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...