Final de concurs total neasteptat, cel putin pentru mine.
Mihai te rog frumos, cu toate ca stiu ca esti foarte ocupat si nu prea ai timp sa propui tot tu o problema, sau altcineva daca aveti vreo problema interesanta nu ezitati, apreciez timpul pe care il dedicati.
Sunt curios ce au celelalte coduri de de dau erori pe anumite teste, asta banuiesc ca s-a intamplat.
M-am uitat peste ele si nu prea pot sa le citesc in totalitate si sa le si inteleg, oricum am incercat inca de dinaintea finalizarii concursului sa folosesc un vector cu 100 de pozitii si sa tin minte pe fiecare pozitie numarul aparitiilor segmentului de acea lungime cum mi-a sugerat
cata45, problema pe care o gasesc este formula de determinare a triunghiurilor posibile apoi.
Eu m-am gandit sa generez toate combinatiie de cele 100 posibile lungimi de segmente, luate cate 3 si apoi sa inmultesc numarul aparitiilor acelor 3 segmente intre ele daca ele exista si pot forma un triunghi ca mai apoi sa adun triunghiurile. Cred ca imi lipseste ceva, si nu imi dau seama ce cu toate ca poate raspunsul este in fata mea, in codurile lui
Payne sau
nomemory.
Este logica mea gresita oare, pentru ca rezultatele codului sunt eronate, nu cu mult, dar e o eroare constanta care tot apare, am incercat multe teste
-
- #include <stdio.h>
-
- int triunghi(int a,int b,int c)
- {
- if(a+b > c && a+c > b && b+c > a)
- {
- return 1;
- }
- return 0;
- }
-
- int main(void)
- {
- unsigned short v[101] = {0}, a, b, c, i;
- int n, x, suma = 0;
-
- freopen("bitcell18.in", "r", stdin);
- freopen("bitcell18.out", "w", stdout);
-
- for(n = 0; scanf("%d", &x) != EOF; n++)v[x]++; //scanez cele n numere din fisierul de intrare si le stochez in V
-
- for(a = 1;a < 99;a++)
- {
- for(b = a+1;b < 100;b++)
- {
- for(c = b+1;c < 101;c++)
- {
- suma += v[a]*v[b]*v[c]*triunghi(a,b,c); //Ce anume uit, sau e gresit?
- }
- }
- }
- printf("%d", suma);
- return 0;
- }
-
-