제출 #1170522

#제출 시각아이디문제언어결과실행 시간메모리
1170522zrzzrzPilot (NOI19_pilot)C++20
100 / 100
382 ms42672 KiB
#include <bits/stdc++.h> using namespace std; int n,q,h[1000005],Fa[1000005],siz[1000005]; long long ans,Ans[1000005]; struct Node{ int x,id; bool operator<(const Node &T)const{ return x<T.x; } }a[1000005],b[1000005]; int GetFa(int x){ return x==Fa[x]?x:Fa[x]=GetFa(Fa[x]); } long long calc(int x){ return 1ll*x*(x-1)/2; } void Merge(int u,int v){ if (u<1||u>n||h[u]>h[v]) return; int x=GetFa(u),y=GetFa(v); if (x==y) return; ans-=calc(siz[x])+calc(siz[y]); Fa[x]=y,siz[y]+=siz[x]; ans+=calc(siz[y]); } int main(){ scanf("%d%d",&n,&q); for (int i=1;i<=n;i++) scanf("%d",&a[i].x),h[i]=a[i].x,a[i].id=Fa[i]=i,siz[i]=1; for (int i=1;i<=q;i++) scanf("%d",&b[i].x),b[i].id=i; sort(a+1,a+n+1),sort(b+1,b+q+1); int p=1; for (int i=1;i<=n;i++){ while (p<=q&&b[p].x<a[i].x) Ans[b[p].id]=ans+i-1,p++; Merge(a[i].id-1,a[i].id); Merge(a[i].id+1,a[i].id); } while (p<=q) Ans[b[p].id]=ans+n,p++; for (int i=1;i<=q;i++) printf("%lld\n",Ans[i]); return 0; }

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

pilot.cpp: In function 'int main()':
pilot.cpp:26:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   26 |         scanf("%d%d",&n,&q);
      |         ~~~~~^~~~~~~~~~~~~~
pilot.cpp:27:37: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   27 |         for (int i=1;i<=n;i++) scanf("%d",&a[i].x),h[i]=a[i].x,a[i].id=Fa[i]=i,siz[i]=1;
      |                                ~~~~~^~~~~~~~~~~~~~
pilot.cpp:28:37: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   28 |         for (int i=1;i<=q;i++) scanf("%d",&b[i].x),b[i].id=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...