답안 #156728

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
156728 2019-10-07T07:54:36 Z AKaan37 Split the Attractions (IOI19_split) C++17
0 / 100
12 ms 12152 KB
#include "split.h"
//Sani buyuk Osman Pasa Plevneden cikmam diyor.
//FatihSultanMehmedHan
//Abdulhamid Han
//Bismillahirrahmanirrahim
//█▀█─█──█──█▀█─█─█
//█▄█─█──█──█▄█─█▄█
//█─█─█▄─█▄─█─█─█─█

#pragma GCC optimize ("O3")
#pragma GCC target ("sse4")

#include <bits/stdc++.h>

using namespace std;

typedef long long lo;
typedef pair< lo,lo > PII;

#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define fio() ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
#define FOR for(int i=1;i<=n;i++)
#define mid ((start+end)/2)
#define ort ((bas+son)/2)

const lo MAX = -1000000000000000000;
const lo MIN = 1000000000000000000;
const lo inf = 1000000000;
const lo KOK = 100000;
const lo LOG = 30;
const lo li = 500005;
const lo mod = 1000000007;


int m,b[li],a[li],k,flag,t,vis[li],bb,say,flagg,visit[li];
int cev;
string s;
vector<int> v[li];
vector<int> vv;

inline void dfs(int node,int der,int boya,int yes){
	if(yes==0 && visit[node]==1)return ;
	if(vis[node]>0)return ;
	if(say==bb)return ;
	//~ cout<<say<<" : : "<<bb<<" : : "<<node<<endl;
	say++;
	vis[node]=boya;
	visit[node]=1;
	for(int i=0;i<(int)v[node].size();i++){
		int go=v[node][i];
		//~ cout<<go<<endl;
		dfs(go,der+1,boya,yes);
	}
}
 
vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q) {
	PII pp[5];
	pp[1].fi=a;
	pp[1].se=1;
	pp[2].fi=b;
	pp[2].se=2;
	pp[3].fi=c;
	pp[3].se=3;
	sort(pp+1,pp+3+1);
	bb=pp[2].fi;
	for(int i=0;i<(int)p.size();i++){
		v[q[i]].pb(p[i]);
		v[p[i]].pb(q[i]);
		//~ cout<<p[i]<<" "<<q[i]<<endl;
	}
	say=0;
	dfs(0,0,pp[2].se,1);
	if(say!=bb){
		for(int i=0;i<n;i++)vv.pb(0);
		return vv;
	}
	for(int i=0;i<n;i++){
		say=0;
		bb=pp[1].fi;
		if(vis[i]==0)dfs(i,i,0,0);
		//~ cout<<say<<" "<<bb<<" "<<i<<endl;
		if(say==pp[1].fi){
			if(vis[i]==0)dfs(i,i,pp[1].se,1);
			flagg=1;
			break;
		}
	}
	if(flagg==0){
		for(int i=0;i<n;i++)vv.pb(0);
		return vv;
	}
	for(int i=0;i<n;i++){
		if(vis[i]==0)vis[i]=3;
		vv.pb(vis[i]);
	}
	return vv;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 12 ms 12024 KB invalid split: #1=0, #2=1, #3=2
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 12 ms 12024 KB invalid split: #1=0, #2=1, #3=2
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 12 ms 12152 KB invalid split: #1=2, #2=0, #3=3
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 12 ms 12152 KB invalid split: #1=0, #2=0, #3=9
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 12 ms 12024 KB invalid split: #1=0, #2=1, #3=2
2 Halted 0 ms 0 KB -