Submission #344031

#TimeUsernameProblemLanguageResultExecution timeMemory
344031KWang31Gift (IZhO18_nicegift)Java
Compilation error
0 ms0 KiB
import java.io.*; import java.util.*; public class gift{ static class FastReader { BufferedReader br; StringTokenizer st; public FastReader() { br = new BufferedReader(new InputStreamReader(System.in)); } String next() { while (st == null || !st.hasMoreElements()) { try { st = new StringTokenizer(br.readLine()); } catch (IOException e) { e.printStackTrace(); } } return st.nextToken(); } int nextInt() { return Integer.parseInt(next()); } } public static class Pair implements Comparable<Pair>{ int ind; long val; public Pair(int a, long b){ this.ind=a; this.val=b; } public int compareTo(Pair other){ if(this.val<other.val)return -1; if(this.val>other.val)return 1; if(this.ind<other.ind)return -1; return 1; } } static int MOD=998244353; static int[] rk, p,siz; public static void main(String[] args){ FastReader br=new FastReader(); int N=br.nextInt(); int K=br.nextInt(); long[] a=new long[N]; long sum=0; long max=0; for (int i = 0; i < N; i++) { a[i]=br.nextInt(); sum+=a[i]; max=Math.max(max,a[i]); } if(sum%K>0 || sum/K < max){ System.out.println("-1");return; } //A number is bottle neck if a[i] long cur=sum/K; PriorityQueue<Pair> pq=new PriorityQueue<>(); //Tracks K+1 elements long d;StringBuilder ans=new StringBuilder(); int op=0; for (int j = 0; j < K; j++) { pq=new PriorityQueue<>(); for (int i = 0; i < N; i++) { if(pq.size()<=K){ pq.add(new Pair(i,a[i])); }else if(pq.peek().val < a[i]){ pq.poll(); pq.add(new Pair(i,a[i])); } } d=cur-pq.poll().val; if(d==0)continue; op++; ans.append(d+" "); for (Pair p: pq) { ans.append((p.ind+1)+" "); a[p.ind]-=d; } ans.append("\n"); cur-=d; } //Now K of them are "bottlenecks" ans.append("\n"); boolean val=false; for (int i = 0; i < N; i++) { if(a[i]>0){ if(!val){ val=true; op++; ans.append(a[i]+" "); } ans.append((i+1)+" "); } } System.out.println(op); System.out.println(ans.toString()); } public static int find(int x, int[] p){ if(p[x]==x)return x; int ans=find(p[x],p); p[x]=ans; return ans; } public static void merge(int a, int b) { if(rk[a]<rk[b]) { p[a]=b; siz[b]+=siz[a]; }else if(rk[a]==rk[b]) { p[a]=b; rk[b]++;siz[b]+=siz[a]; }else { p[b]=a; siz[a]+=siz[b]; } } public static long pow(int b, int e){ if(e==0)return 1; if(e==1)return b; long x=pow(b,e/2); x*=x; x%=MOD; x*=pow(b,e%2); return x%MOD; } public static void dfs(ArrayList<Integer>[] arl, int cur){ for (int i : arl[cur]) { } } } //Debugging: //Are you sure your algorithm is correct? //Bounds: long //Special cases: n=0,1? //Make sure you remove your debugging code before you submit!

Compilation message (stderr)

nicegift.java:2: error: class gift is public, should be declared in a file named gift.java
public class gift{
       ^
1 error