답안 #750675

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
750675 2023-05-30T06:12:37 Z mars4 Regions (IOI09_regions) C++17
75 / 100
4596 ms 130092 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              int
#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 0 ms 208 KB Output is correct
2 Correct 1 ms 308 KB Output is correct
3 Correct 3 ms 336 KB Output is correct
4 Correct 4 ms 336 KB Output is correct
5 Correct 9 ms 336 KB Output is correct
6 Correct 21 ms 848 KB Output is correct
7 Correct 16 ms 592 KB Output is correct
8 Correct 16 ms 816 KB Output is correct
9 Correct 45 ms 1488 KB Output is correct
10 Correct 64 ms 1848 KB Output is correct
11 Correct 117 ms 2000 KB Output is correct
12 Correct 156 ms 2940 KB Output is correct
13 Correct 207 ms 2512 KB Output is correct
14 Correct 284 ms 2988 KB Output is correct
15 Correct 267 ms 5840 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1653 ms 7068 KB Output is correct
2 Correct 1837 ms 6080 KB Output is correct
3 Correct 2516 ms 9336 KB Output is correct
4 Correct 319 ms 10084 KB Output is correct
5 Correct 415 ms 13804 KB Output is correct
6 Runtime error 645 ms 34608 KB Execution killed with signal 6
7 Correct 1448 ms 24392 KB Output is correct
8 Runtime error 1132 ms 60328 KB Execution killed with signal 6
9 Correct 2667 ms 41000 KB Output is correct
10 Runtime error 3357 ms 130092 KB Execution killed with signal 6
11 Correct 4596 ms 60496 KB Output is correct
12 Correct 1487 ms 44996 KB Output is correct
13 Correct 1953 ms 45196 KB Output is correct
14 Incorrect 2730 ms 52672 KB Output isn't correct
15 Correct 3333 ms 66292 KB Output is correct
16 Correct 3077 ms 71612 KB Output is correct
17 Incorrect 3003 ms 61172 KB Output isn't correct