Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Imagine  (Citit de 12879 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
visanr
Nu mai tace
*****

Karma: 168
Deconectat Deconectat

Mesaje: 213



Vezi Profilul
« : Mai 30, 2012, 21:41:24 »

Problema este aceasta: http://campion.edu.ro/arhiva/index.php?page=problem&action=view&id=771
Am facut cu divide et impera si am construit si sirul compresat ( nu era necesar, dar mi-a fost mai usor sa vad daca face bine)
Rezolvarea este aceasta:
Cod:
#include <cstdio>
#include <cstdlib>
#include <vector>
using namespace std;


int m[260][260], n;
vector<int> sol;

void solve(int lmin, int cmin, int lmax, int cmax)
{
     int i, j, app[2];
     for(i = 0; i < 2; i++) app[i] = 0;
     for(i = lmin; i <= lmax; i++)
           for(j = cmin; j <= cmax; j++)
                 app[m[i][j]] ++;
     if(app[0] && !app[1])
     {
               sol.push_back(0);
               sol.push_back(0);
     }
     if(app[1] && !app[0])
     {
                sol.push_back(0);
                sol.push_back(1);
     }
     if(app[1] && app[0])
     {
               sol.push_back(1);
               int line = (lmin + lmax) / 2, column = (cmin + cmax) / 2;
               solve(line + 1, cmin, lmax, column);                 // A
               solve(lmin, cmin, line, column);                       // B
               solve(line + 1, column + 1, lmax, cmax);           // C
               solve(lmin, column + 1, line, cmax);                 // D
     }  
}

int main()
{
    freopen("imagine.in", "r", stdin);
    freopen("imagine.out", "w", stdout);
    int i, j;
    scanf("%i", &n);
    for(i = 1; i <= n; i++)
          for(j = 1; j <= n; j++)
                scanf("%i", &m[i][j]);
    solve(1, 1, n, n);
    printf("%i\n", sol.size());
    return 0;
}
Cu aceasta rezolvare iau 60 de pct, 3 WA si un KBS 6. Imi puteti spune si mie va rog care ar fi problema de primesc WA?



LE: varianta recursiva aduce tot 60 de pct, doar ca am scapat de KBS 6.
« Ultima modificare: Mai 31, 2012, 16:06:51 de către Visan Radu » Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines