제출 #842556

#제출 시각아이디문제언어결과실행 시간메모리
8425568pete8Pilot (NOI19_pilot)C++17
100 / 100
657 ms119940 KiB
#include<iostream> #include<stack> #include<map> #include<vector> #include<string> #include<unordered_map> #include <queue> #include<cstring> #include<limits.h> #include<cmath> #include<set> #include<algorithm> #include<bitset> //#include "supertrees.h" using namespace std; #define ll long long #define f first #define endl "\n" #define s second #define pii pair<int,int> #define ppii pair<int,pii> #define pb push_back #define all(x) x.begin(),x.end() #define F(n) for(int i=0;i<n;i++) #define lb lower_bound #define fastio ios::sync_with_stdio(false);cin.tie(NULL); using namespace std; #define int long long const int mxn=1e6,mod=998244353,lg=20,root=80,inf=1e9; void setIO(string name) { ios_base::sync_with_stdio(0); cin.tie(0); freopen((name+".in").c_str(),"r",stdin); freopen((name+".out").c_str(),"w",stdout); } int n,m,ct,sum=0,k; vector<int>pos[mxn+10]; set<int>cur; int pre[mxn+10],pa[mxn+10],sz[mxn+10]; int find(int u){ if(pa[u]==u)return u; return pa[u]=find(pa[u]); } void solve(int u,int v){ int a=find(u),b=find(v); if(a==b)return; sum-=(pre[sz[a]]+pre[sz[b]]); if(sz[a]>sz[b]){ pa[b]=a; sz[a]+=sz[b]; sum+=pre[sz[a]]; return; } pa[a]=b; sz[b]+=sz[a]; sum+=pre[sz[b]]; } int32_t main(){ fastio cin>>n>>m; vector<int>v(n+1); for(int i=1;i<=n;i++){ cin>>v[i]; pos[v[i]].pb(i); } sz[0]=1; for(int i=1;i<=mxn;i++)pre[i]=pre[i-1]+i,sz[i]=1,pa[i]=i; ct=0; vector<pii>q(m); vector<int>ans(m); for(int i=0;i<m;i++){ cin>>q[i].f; q[i].s=i; } cur.insert(0); cur.insert(n+1); sort(q.begin(),q.end()); for(int i=0;i<m;i++){ while(ct<=q[i].f){ for(auto j:pos[ct]){ sum++; if((j-1)&&(v[j-1]<=ct))solve(j,j-1); if(j+1<=n&&v[j+1]<=ct)solve(j,j+1); } ct++; } ans[q[i].s]=sum; } for(auto i:ans)cout<<i<<'\n'; return 0; }

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

pilot.cpp: In function 'void setIO(std::string)':
pilot.cpp:32:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   32 |  freopen((name+".in").c_str(),"r",stdin);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pilot.cpp:33:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   33 |  freopen((name+".out").c_str(),"w",stdout);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...