제출 #425465

#제출 시각아이디문제언어결과실행 시간메모리
425465errorgornPilot (NOI19_pilot)C++17
100 / 100
876 ms61048 KiB
#include <cstdio> #include <utility> #include <vector> #include <algorithm> using namespace std; typedef pair<int,int> ii; vector<ii> v; vector<ii> qv; int n,q,t; long long k; int arr[1000005]; long long qrr[1000005]; bool fly[1000005]; int p[1000005],r[1000005],s[1000005]; int parent(int i){return (i==p[i])?i:p[i]=parent(p[i]);} long long siz(int i){ long long ans=s[parent(i)]; return (ans*(ans+1))/2; } void unions(int i,int j){ i=parent(i); j=parent(j); if (r[i]<r[j]){ p[i]=j; s[j]+=s[i]; } else{ p[j]=i; s[i]+=s[j]; if (r[i]==r[j]) r[i]++; } } void f(int i){ if (fly[i-1] && fly[i+1]){ k-=siz(i-1); k-=siz(i+1); unions(i-1,i); unions(i,i+1); k+=siz(i); } else if (fly[i-1]){ k-=siz(i-1); unions(i-1,i); k+=siz(i); } else if (fly[i+1]){ k-=siz(i+1); unions(i,i+1); k+=siz(i); } else{ k+=1; } fly[i]=true; } int main(){ //freopen("meow","r",stdin); scanf("%d%d",&n,&q); for (int x=1;x<=n;x++){ scanf("%d",&arr[x]); v.push_back(ii (arr[x],x)); p[x]=x; s[x]=1; } sort(v.begin(),v.end()); /*for (vector<ii>::iterator it=v.begin();it!=v.end();it++){ printf("%d-%d ",(*it).first,(*it).second); }*/ for (int x=0;x<q;x++){ scanf("%d",&t); qv.push_back(ii (t,x)); } sort(qv.begin(),qv.end()); int h,index; vector<ii>::iterator it=v.begin(); for (vector<ii>::iterator query=qv.begin();query!=qv.end();query++){ h=(*query).first,index=(*query).second; while (it!=v.end() && (*it).first<=h){ f((*it).second); it++; //printf("%d %d\n",k,(*it).second); } qrr[index]=k; } for (int x=0;x<q;x++){ printf("%lld\n",qrr[x]); } }

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

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