답안 #750673

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
750673 2023-05-30T06:06:39 Z mars4 Regions (IOI09_regions) C++17
65 / 100
5304 ms 131072 KB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp> 

using namespace std;
using namespace __gnu_pbds; 

#define ff              first
#define ss              second
#define ll              int64_t
#define ld              long double
#define nl              cout<<"\n"
#define i128            __int128_t
#define all(v)          v.begin(),v.end()
#define mset(a,v)       memset((a),(v),sizeof(a))
#define forn(i,a,b)     for(int64_t i=int64_t(a);i<int64_t(b);++i)
#define forb(i,a,b)     for(int64_t i=int64_t(a);i>=int64_t(b);--i)
#define fastio()        ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);

#define mod         1'000'000'007
#define mod2        998'244'353 
#define inf         1'000'000'000'000'007
#define pi          3.14159265358979323846

template<class key,class cmp=std::less<key>>
using ordered_set=tree<key,null_type,cmp,rb_tree_tag,tree_order_statistics_node_update>;

template<class L,class R> ostream& operator<<(ostream& out,pair<L,R> &p)        {return out<<"("<<p.ff<<", "<<p.ss<<")";}
template<class T> ostream& operator<<(ostream& out,vector<T> &v)                {out<<"[";for(auto it=v.begin();it!=v.end();++it){if(it!=v.begin())out<<", ";out<<*it;}return out<<"]";}
template<class T> ostream& operator<<(ostream& out,deque<T> &v)                 {out<<"[";for(auto it=v.begin();it!=v.end();++it){if(it!=v.begin())out<<", ";out<<*it;}return out<<"]";}
template<class T> ostream& operator<<(ostream& out,set<T> &s)                   {out<<"{";for(auto it=s.begin();it!=s.end();++it){if(it!=s.begin())out<<", ";out<<*it;}return out<<"}";}
template<class T> ostream& operator<<(ostream& out,ordered_set<T> &s)           {out<<"{";for(auto it=s.begin();it!=s.end();++it){if(it!=s.begin())out<<", ";out<<*it;}return out<<"}";}
template<class L,class R> ostream& operator<<(ostream& out,map<L,R> &m)         {out<<"{";for(auto it=m.begin();it!=m.end();++it){if(it!=m.begin())out<<", ";out<<*it;}return out<<"}";}

void dbg_out() {cerr<<"]\n";}
template<typename Head,typename... Tail> 
void dbg_out(Head H,Tail... T) {cerr<<H;if(sizeof...(Tail))cerr<<", ";dbg_out(T...);}
#ifdef LOCAL
#define dbg(...) cerr<<"["<<#__VA_ARGS__<<"] = [",dbg_out(__VA_ARGS__)
#else
#define dbg(...)
#endif

//---------------------------------mars4---------------------------------

vector<vector<ll>> v;
vector<vector<ll>> g;
vector<vector<ll>> vst;
vector<ll> regions;
vector<ll> st;
vector<ll> ed;
vector<ll> dfs_cnt;
vector<ll> eregions;
const ll B=450;
ll timer=-1;

void dfs(ll cur)
{
	timer++;
	st[cur]=timer;
	vst[regions[cur]].push_back(st[cur]);
	for(ll r:eregions)
	{
		g[regions[cur]][r]+=dfs_cnt[r];
	}
	dfs_cnt[regions[cur]]++;
	for(ll nxt:v[cur])
	{
		dfs(nxt);
	}
	dfs_cnt[regions[cur]]--;
	ed[cur]=timer;
}

int main()
{
	/* fastio(); */
	ll z,n,m,t,k,i,j,l,d,h,r;
	ll q;
	ll root_region;
	cin>>n>>m>>q;
	v=vector<vector<ll>>(n);
	vst=vector<vector<ll>>(m);
	g=vector<vector<ll>>(m,vector<ll>(B));
	regions=vector<ll>(n);
	st=vector<ll>(n);
	ed=vector<ll>(n);
	dfs_cnt=vector<ll>(m);
	vector<ll> cnt(m);
	vector<vector<ll>> employee_region(m);
	cin>>root_region;
	root_region--;
	regions[0]=root_region;
	employee_region[root_region].push_back(0);
	forn(i,1,n)
	{
		cin>>l>>r;
		l--,r--;
		v[l].push_back(i);
		regions[i]=r;
		employee_region[r].push_back(i);
		cnt[r]++;
	}
	forn(i,0,m)
	{
		if(cnt[i]>=B)
		{
			eregions.push_back(i);
		}
	}
	dfs(0);
	while(q--)
	{
		cin>>l>>r;
		l--,r--;
		ll res=0;
		if(cnt[l]>=B)
		{
			res=g[r][l];
		}
		else
		{
			for(ll i:employee_region[l])
			{
				ll led=upper_bound(all(vst[r]),ed[i])-vst[r].begin();
				ll lst=lower_bound(all(vst[r]),st[i])-vst[r].begin();
				res+=led-lst;
			}
		}
		cout<<res<<endl;
	}
	cerr<<"\nTime elapsed: "<<1000*clock()/CLOCKS_PER_SEC<<"ms\n";
	return 0;
}

Compilation message

regions.cpp: In function 'int main()':
regions.cpp:78:5: warning: unused variable 'z' [-Wunused-variable]
   78 |  ll z,n,m,t,k,i,j,l,d,h,r;
      |     ^
regions.cpp:78:11: warning: unused variable 't' [-Wunused-variable]
   78 |  ll z,n,m,t,k,i,j,l,d,h,r;
      |           ^
regions.cpp:78:13: warning: unused variable 'k' [-Wunused-variable]
   78 |  ll z,n,m,t,k,i,j,l,d,h,r;
      |             ^
regions.cpp:78:15: warning: unused variable 'i' [-Wunused-variable]
   78 |  ll z,n,m,t,k,i,j,l,d,h,r;
      |               ^
regions.cpp:78:17: warning: unused variable 'j' [-Wunused-variable]
   78 |  ll z,n,m,t,k,i,j,l,d,h,r;
      |                 ^
regions.cpp:78:21: warning: unused variable 'd' [-Wunused-variable]
   78 |  ll z,n,m,t,k,i,j,l,d,h,r;
      |                     ^
regions.cpp:78:23: warning: unused variable 'h' [-Wunused-variable]
   78 |  ll z,n,m,t,k,i,j,l,d,h,r;
      |                       ^
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 292 KB Output is correct
2 Correct 1 ms 248 KB Output is correct
3 Correct 2 ms 336 KB Output is correct
4 Correct 4 ms 336 KB Output is correct
5 Correct 8 ms 464 KB Output is correct
6 Correct 17 ms 1268 KB Output is correct
7 Correct 27 ms 980 KB Output is correct
8 Correct 29 ms 1232 KB Output is correct
9 Correct 64 ms 2140 KB Output is correct
10 Correct 86 ms 2816 KB Output is correct
11 Correct 115 ms 2812 KB Output is correct
12 Correct 149 ms 4296 KB Output is correct
13 Correct 235 ms 3792 KB Output is correct
14 Correct 362 ms 4164 KB Output is correct
15 Correct 295 ms 7264 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2039 ms 9076 KB Output is correct
2 Correct 2304 ms 8376 KB Output is correct
3 Correct 2898 ms 11748 KB Output is correct
4 Correct 283 ms 17928 KB Output is correct
5 Correct 340 ms 23400 KB Output is correct
6 Runtime error 668 ms 62116 KB Execution killed with signal 6
7 Correct 1839 ms 43752 KB Output is correct
8 Runtime error 1057 ms 100496 KB Execution killed with signal 6
9 Correct 2447 ms 71284 KB Output is correct
10 Runtime error 2540 ms 131072 KB Execution killed with signal 6
11 Correct 5304 ms 109592 KB Output is correct
12 Correct 1445 ms 77412 KB Output is correct
13 Correct 2136 ms 77684 KB Output is correct
14 Runtime error 1601 ms 131072 KB Execution killed with signal 6
15 Runtime error 2910 ms 131072 KB Execution killed with signal 6
16 Runtime error 3434 ms 131072 KB Execution killed with signal 6
17 Runtime error 2321 ms 131072 KB Execution killed with signal 11