Submission #2237005


Source Code Expand

import java.util.*;
import java.io.*;

class Main {
	public static void main (String[] args) {
		Reader in = new Reader ();
		int n = in.nextInt();
		int [] d = new int [n + 5];
		int [] cnt = new int [n + 5];
		
		int diametre = 0;
		for(int i = 1; i <= n; i++) {
			d[i] = in.nextInt();
			cnt[d[i]] += 1;
			diametre = Math.max(diametre, d[i]);
		}
		boolean ans = true;
		if(diametre >= n) ans = false;
		if(diametre % 2 == 1) {
			int mid = (diametre >> 1) + 1;
			for(int i = mid; i <= diametre; i++) {
				if(cnt[i] > 1) {
					cnt[i] -= 2;
				} else {
					ans = false;
					break;
				}
			}
			for(int i = 0; i <= n; i++) {
				if(cnt[i] > 0) {
					if(i <= mid) ans = false;
				}
			}
		} else {
			int mid = diametre >> 1;
			for(int i = mid; i <= diametre; i++) {
				if(i == mid) {
					if(cnt[i] > 0) {
						cnt[i] -= 1;
					} else {
						ans = false;
						break;
					}
				} else {
					if(cnt[i] > 1) {
						cnt[i] -= 2;
					} else {
						ans = false;
						break;
					}
				}
			}
			for(int i = 0; i <= n; i++) {
				if(cnt[i] > 0) {
					if(i <= mid) ans = false;
				}
			} 
		}
		if(ans) System.out.println("Possible");
		else System.out.println("Impossible");
	}
	static class Reader {
		private BufferedReader a;
		private StringTokenizer b;
		Reader() {
			a = new BufferedReader (new InputStreamReader (System.in));
		} 
		public String next () {
			while(b == null || !b.hasMoreTokens()) {
				try {
					 b = new StringTokenizer (a.readLine());
				 } catch (IOException e) {
					 e.printStackTrace();
				 }
			 }
			 return b.nextToken();
		}
		public int nextInt () {
		     return Integer.parseInt(next());
		}
		public long nextLong () {
			return Long.parseLong(next());
		}
		public double nextDouble () {
			return Double.parseDouble(next());
		}
		public String nextLine () {
		 	try {
		 		return a.readLine();
		 	} catch (IOException e) {
		 		e.printStackTrace ();
		 	}
		 	return "##";
		}
	}
}

Submission Info

Submission Time
Task C - Tree Restoring
User tasmeemreza
Language Java7 (OpenJDK 1.7.0)
Score 700
Code Size 2046 Byte
Status AC
Exec Time 76 ms
Memory 22484 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 700 / 700
Status
AC × 6
AC × 45
Set Name Test Cases
Sample example0, example1, example2, example3, example4, example5
All almostline0, almostline1, almostline2, almostline3, can0, can1, can2, can3, can4, can5, can6, deg0, deg1, deg2, deg3, example0, example1, example2, example3, example4, example5, handmade0, line0, line1, line2, line3, ng10, ng11, ng12, ng13, ng20, ng21, ng22, ng23, plus0, plus1, plus2, plus3, rand0, rand1, rand2, star0, star1, star2, star3
Case Name Status Exec Time Memory
almostline0 AC 76 ms 18644 KB
almostline1 AC 74 ms 18772 KB
almostline2 AC 76 ms 20692 KB
almostline3 AC 75 ms 18644 KB
can0 AC 75 ms 20308 KB
can1 AC 75 ms 18772 KB
can2 AC 75 ms 18900 KB
can3 AC 75 ms 18772 KB
can4 AC 75 ms 18644 KB
can5 AC 75 ms 20436 KB
can6 AC 74 ms 18772 KB
deg0 AC 75 ms 18644 KB
deg1 AC 75 ms 18644 KB
deg2 AC 76 ms 18644 KB
deg3 AC 76 ms 18644 KB
example0 AC 76 ms 18772 KB
example1 AC 76 ms 18644 KB
example2 AC 75 ms 20308 KB
example3 AC 75 ms 18644 KB
example4 AC 75 ms 18644 KB
example5 AC 75 ms 18772 KB
handmade0 AC 75 ms 18644 KB
line0 AC 75 ms 18644 KB
line1 AC 75 ms 18772 KB
line2 AC 75 ms 18772 KB
line3 AC 76 ms 20692 KB
ng10 AC 76 ms 18900 KB
ng11 AC 75 ms 18644 KB
ng12 AC 76 ms 22484 KB
ng13 AC 76 ms 20564 KB
ng20 AC 75 ms 18772 KB
ng21 AC 75 ms 20308 KB
ng22 AC 75 ms 18772 KB
ng23 AC 75 ms 20180 KB
plus0 AC 76 ms 20564 KB
plus1 AC 75 ms 18644 KB
plus2 AC 75 ms 18900 KB
plus3 AC 75 ms 18644 KB
rand0 AC 75 ms 18772 KB
rand1 AC 75 ms 18644 KB
rand2 AC 75 ms 18772 KB
star0 AC 75 ms 18772 KB
star1 AC 75 ms 20436 KB
star2 AC 75 ms 18772 KB
star3 AC 75 ms 16852 KB