Submission #1085360

#TimeUsernameProblemLanguageResultExecution timeMemory
1085360IUA_HasinSeptember (APIO24_september)C++17
100 / 100
371 ms39232 KiB
#include "september.h" #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #define ll long long using namespace std; using namespace __gnu_pbds; typedef tree< int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) { ll deg[N], vis[N]; for(int i=0; i<N; i++){ deg[i] = 0; vis[i] = 0; } for(int i=1; i<F.size(); i++){ ll a = F[i]; deg[i]++; deg[a]++; } if(M==0){ ll ans = 0; set<ll> s; for(int i=0; i<S.size(); i++){ for(int j=0; j<S[i].size(); j++){ ll a = S[i][j]; ll parnt = F[a]; deg[a]--; deg[parnt]--; //cout << deg[a] << " " << deg[parnt] << endl; auto it = s.find(parnt); if(deg[a]!=0){ s.insert(a); } if(it!=s.end()){ if(deg[parnt]==0){ s.erase(it); } } if(s.size()==0){ ans++; } for(auto u : s){ cout << u << " "; } //cout << i << " " << 59; cout<<endl; } } return ans; } else { set<ll> world; set<ll> s[M]; set<ll> check; ll ans = 0; for(int i=0; i<S[0].size(); i++){ for(int j=0; j<M; j++){ ll a = S[j][i]; ll parnt = F[a]; world.insert(a); s[j].insert(a); if(vis[a]==0){ deg[a]--; deg[parnt]--; auto it = check.find(parnt); if(deg[a]!=0){ check.insert(a); } if(it!=check.end()){ if(deg[parnt]==0){ check.erase(it); } } vis[a] = 1; } // for(auto u : check){ // cout << u << " "; // } // cout<<endl; } ll status = 1; ll siz = world.size(); for(int j=0; j<M; j++){ ll a = s[j].size(); if(a!=siz){ status = -1; break; } } if(status==1 && check.size()==0){ ans++; } // cout<<endl; // for(auto u : check){ // cout << u << " "; // } // cout<<endl; } return ans; } }

Compilation message (stderr)

september.cpp: In function 'int solve(int, int, std::vector<int>, std::vector<std::vector<int> >)':
september.cpp:26:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |  for(int i=1; i<F.size(); i++){
      |               ~^~~~~~~~~
september.cpp:36:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |   for(int i=0; i<S.size(); i++){
      |                ~^~~~~~~~~
september.cpp:37:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   37 |    for(int j=0; j<S[i].size(); j++){
      |                 ~^~~~~~~~~~~~
september.cpp:76:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   76 |   for(int i=0; i<S[0].size(); 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...