Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Dezbateri - Problema evaluator  (Citit de 17107 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
classius
Strain


Karma: -2
Deconectat Deconectat

Mesaje: 9



Vezi Profilul
« : Iulie 18, 2013, 14:14:31 »

La aceasta problema http://campion.edu.ro/arhiva/index.php?page=problem&action=view&id=82 pe testele 8-12 primesc WA.
Am descaracat fisierul "in" si "ok" pentru testul 8, de pe site si am rulat pe datele de intrare din "in". Am comparat raspunsul dat de sursa mea cu cel din "ok"(d.p.d.v lexicografic) si am constatat ca sunt la fel.

Folosesc Code::Blocks 12.11 si compilerul GNU GCC.
Mentionez ca am rulat de mai multe ori, folosind standardele c++98,c++0x si c++11.
Am mai rulat si in Microsoft Visual Studio 2010.
Toate au avut acelasi rezultat.

Imi poate da cineva indicatii in legatura cu ce as putea face gresit sau cum se comporta evaluatorul de pe .campion?

Sursa mea:

Cod:
#include <fstream>
#include <vector>
#include <string>
#include <queue>
#include <algorithm>
#include <cctype>
#include <cassert>

using namespace std;

ifstream f("dezbateri.in");
ofstream g("dezbateri.out");

int main()
{
    vector<int> v[1001];
    int gr[1001]={};

    int n,m;

    f>>n>>m;
    f.ignore();

    for(int i=1;i<=m;i++){
        string a;
        getline(f,a);

        int x[3]={};
        unsigned j=0;

        for(int l=0;l<3;l++){
            while(j<a.size()&&isdigit(a[j])){
                x[l]=x[l]*10+a[j]-'0';
                j++;
            }
            j++;
        }

        j=0;
        while(isdigit(a[j]))
            j++;

        if(a[j]==','){
            v[x[0]].push_back(x[2]);
            v[x[1]].push_back(x[2]);
            gr[x[2]]+=2;
        }
        else{
            v[x[0]].push_back(x[1]);
            v[x[0]].push_back(x[2]);
            gr[x[1]]++;
            gr[x[2]]++;
        }
    }

    vector<int> sl[1001];
    queue<int> q;

    for(int i=1;i<=n;i++)
        if(!gr[i]){
            sl[0].push_back(i);
            q.push(i);
        }

    int nr=0;
    queue<int> ax,ax1;

    while(!q.empty()){
        nr++;
        while(!q.empty()){
            int i=q.front();
            q.pop();

            for(unsigned j=0;j<v[i].size();j++){
                gr[v[i][j]]--;
                if(!gr[v[i][j]]){
                    sl[nr].push_back(v[i][j]);
                    ax.push(v[i][j]);
                }
                if(gr[v[i][j]]==-1){
                    g<<0;
                    return 0;
                }
            }

        }
        q=ax;
        ax=ax1;
    }

    for(int i=1;i<=n;i++)
        if(gr[i]){
            g<<0;
            return 0;
        }

    for(int i=1000;i>=0;i--)
        if(sl[i].size()){
            sort(sl[i].begin(),sl[i].end());
            for(unsigned j=0;j<sl[i].size();j++){
                g<<sl[i][j];
                if(j!=sl[i].size()-1||i!=0)
                    g<<" ";
            }
        }
    g<<'\n';

    return 0;
}
Memorat
andreiulian
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 20



Vezi Profilul
« Răspunde #1 : Februarie 08, 2014, 11:44:48 »

Salut,
si mie mi s-a intamplt sa nu primesc punctajul total pe campion.edu chiar daca pentru testele descarcate programul afisa rspunsul corect.Si chiar de vreo doua ori.
A mai auzit si de altii in situatia asta. Cred ca problema e la evaluator, nu la noi.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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