#! /usr/bin/perl

use locale;
use strict;

if (@ARGV < 3) {
    print "USAGE: cut_prefs.pl CUT_OFF TOTAL_PER ABS_CUT\n\n";
    print "Obcina wpisy mało ważne, opis nie jest uwzględniany\n";
    print "jeżeli zachodzi jeden z warunków:\n";
    print " - jezeli liczba wystapien danego opisu jest mniejsza\n";
    print "   od \$CUT_OFF*(liczba wystapien poprzedniego opisu)\n";
    print " - jezeli liczba wystapien danego opisu jest mniejsza\n";
    print "   od \$TOTAL_PER*(suma wszystkich wystapien)\n";
    print " - jezeli liczba wystapien danego opisu jest mniejsza\n";
    print "   od \$ABS_CUT\n";
    exit;
}

# jezeli liczba wystapien danego opisu jest mniejsza
# od $CUT_OFF*(liczba wystapien poprzedniego opisu) - opis nie jest uwzgledniany
my $CUT_OFF = shift;

# jezeli liczba wystapien danego opisu jest mniejsza
# od $TOTAL_PER*(suma wszystkich wystapien) - opis nie jest uwzgledniany
my $TOTAL_PER = shift;

# jezeli liczba wystapien danego opisu jest mniejsza
# od $ABS_CUT - opis nie jest uwzgledniany
my $ABS_CUT = shift;

my $pref = "";
my $oldPref = " ";
my $countTotal = -1;
my $count = -1;

while (<>) {

    if (($count == -1) && ($_ =~ /^$oldPref\t.*/)) {
	next;
    }

    if ($pref =~ //) {
	$_ =~ /^(\w+)\t.+\t(\d+)\t(\d+)/;
	$pref = $1;
	$count = $2;
	$countTotal = $3;
#  	print "\$pref=$pref\t\$count=$count\t\$countTotal=$countTotal\n";
    }
    $_ =~ /\w+\t.+\t(\d+)\t\d+/;
    my $c = $1;
#     print "\$c=$c\t\$CUT_OFF*\$count=$CUT_OFF*$count\t\$TOTAL_PER*\$countTotal=".$TOTAL_PER*$countTotal."\n";
    if (($CUT_OFF*$count < $c) && ($TOTAL_PER*$countTotal < $c) && ($ABS_CUT < $c)) {
	$count = $c;
	print $_;
    } else {
	$count = -1;
	$oldPref = $pref;
	$pref = "";
    }
}
