Rezultati

Up. imeNalogaJezikRezultatČas oddaje
jam-2018 Kombinatorna logika Java 0/100Prekoračen čas (TLE) 10. maj '18 @ 20:13

Test Točke Porabljen spomin Porabljen čas Status
#1 12/12 36,762 MiB 0,000 s OK
#2 0/12 77,176 MiB 0,000 s Prekoračen čas
#3 12/12 34,184 MiB 0,000 s OK
#4 12/12 34,539 MiB 0,000 s OK
#5 0/13 95,711 MiB 8,115 s Prekoračen čas
#6 13/13 35,078 MiB 0,000 s OK
#7 13/13 36,371 MiB 0,000 s OK
#8 0/13 36,387 MiB 0,000 s Program je končal z neničelno kodo
Stderr:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 292
	at java.lang.String.charAt(String.java:658)
	at Main.indexKonec(Main.java:16)
	at Main.rek(Main.java:31)
	at Main.main(Main.java:102)

Ocenjevani program (Main.java):
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Scanner;

public class Main {

    static String s;

    public static int indexKonec( int i){


        if(i >= s.length() || s.charAt(i) != '(')return i;
        int oklepajev = 1;
        i+=1;
        while(oklepajev > 0){
            if(s.charAt(i) == '(')oklepajev++;
            if(s.charAt(i) == ')')oklepajev--;
            i++;
        }
        return i-1;
    }

    public static boolean rek(int i){
        if (s.charAt(i) == '('){
            return false;
        }

        char c = s.charAt(i);
        i++;
        if(c == 'S'){
            int k1 = indexKonec(i);
            int k2 = indexKonec(k1+1);
            int k3 = indexKonec(k2+1);

            if(k3 >= s.length())
                return false;
            else{

                String x = s.substring(i, k1+1);
                String y = s.substring(k1+1, k2+1);
                String z = s.substring(k2+1, k3+1);
                s =  s.substring(0, i-1) + x + z + "(" + y + z + ")" + s.substring(k3+1, s.length());
                return true;

            }

        }

        if(c == 'K'){

            int k1 = indexKonec(i);
            int k2 = indexKonec(k1+1);

            if(k2 >= s.length())
                return false;
            else{

                String x = s.substring(i, k1+1);
                String y = s.substring(k1+1, k2+1);
                s =  s.substring(0, i-1) + x + s.substring(k2+1, s.length());
                return true;
            }

        }
        System.out.println("asdfs");
        return true;
    }

    public static boolean poenostavi(){
        if(s.charAt(0) == '('){
            int k = indexKonec(0);
            s = s.substring(1, k) + s.substring(k+1, s.length());

            return true;
        }
        if(s.contains("((")){
            int k = s.indexOf("((");
            int kk = indexKonec(k+1);
            s = s.substring(0, k+1) + s.substring(k+2, kk) + s.substring(kk+1, s.length());
            return true;
        }

        for(int i = 0; i < s.length()-2; i++){
            if(s.charAt(i) =='(' && s.charAt(i+2) == ')'){
                s = s.substring(0,i) + s.substring(i+1, i+2) + s.substring(i+3, s.length());
                return true;
            }
        }

        return false;
    }

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        s = sc.next();
        System.out.println(s);

        outer:while(true) {
            inner:for (int i = 0; i < s.length(); i++) {
                if (!rek(i))
                    continue inner;
                else {
                    // okrajsaj
                    while(poenostavi()){

                    }

                    System.out.println("=" + s);
                    continue outer;
                }
            }

            break ;
        }


        /*in = sc.next();

        Izraz root = new Izraz();

        int a = 0;*/
/*
    static String in;
    static int index = 0;

    static boolean overEnd() {
        return index >= in.length() || in.charAt(index) == ')';
    }

    static class Izraz {

        char znak;

        Izraz x, y, z;

        void readAll() {
            if(znak == 'K') {
                x = create();
                y = create();
                if(!overEnd())
                    y.readAll();
            } else {
                x = create();
                y = create();
                z = create();
                if(!overEnd())
                    z.readAll();
            }
        }

        static Izraz create() {

            if(index >= in.length())
                return null;

            boolean imaOklepaj = in.charAt(index) == '(';

            if(!imaOklepaj) {
                Izraz r = new Izraz();
                r.znak = in.charAt(index++);
                return r;
            }

            Izraz r = new Izraz();
            r.znak = in.charAt(index++);
            r.readAll();

            if(r.znak == ')') {
                index++;
            }
            return r;
        }

    }
*/
    }
}