Cod sursa(job #3287061)

Utilizator lucky1992Ion Ion lucky1992 Data 15 martie 2025 10:06:39
Problema Numarare triunghiuri Scor 0
Compilator java Status done
Runda Arhiva de probleme Marime 1.88 kb
import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {

  public static class MyScanner implements Closeable {
    BufferedReader br;
    StringTokenizer st;

    public MyScanner(String file) throws FileNotFoundException {
      br = new BufferedReader(new InputStreamReader(new FileInputStream(file)), 1 << 16);
    }

    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());
    }

    long nextLong() {
      return Long.parseLong(next());
    }

    double nextDouble() {
      return Double.parseDouble(next());
    }

    String nextLine(){
      String str = "";
      try {
        str = br.readLine();
      } catch (IOException e) {
        e.printStackTrace();
      }
      return str;
    }

    @Override
    public void close() throws IOException {
      br.close();
    }
  }

  public static void main(String[] args) throws IOException {

    try (MyScanner scanner = new MyScanner("nrtri.in");
         PrintWriter pw = new PrintWriter(new FileOutputStream("nrtri.out"))) {

      int N = scanner.nextInt();
      int[] v = new int[N+1];

      for (int i = 1; i <= N; i++) {
        v[i] = scanner.nextInt();
      }

      Arrays.sort(v);
      int count = 0;

      for (int a = 1; a <= N - 2; a++) {
        for (int b = a + 1; b <= N - 1; b++) {
          for (int c = b + 1; c <= N; c++) {
            int t = v[a] + v[b];
            int r = Arrays.binarySearch(v, c, N+1, t);
            if (r >= 0) {
              count += r - c + 1;
            } else {
              r = -(r+1);
              count += r - c;
            }
          }
        }
      }

      pw.println(count);
    }
  }
}