BYTSE2 - spoj:请告诉我可能做错了什么?

时间:2016-06-27 19:39:57

标签: c++ vector dynamic-programming

let title = self.place.placeDescription
let image = self.place.image
let text = NSAttributedString(string: "Lon: \(self.place.longitude), lat: \(self.place.latitude)")

let shareViewController = UIActivityViewController(activityItems: [title, text, image], applicationActivities: nil)

使用变量存储当前号码。在大厅里的舞者。对于每个退出,我都要从变量中减去。我尝试了一些测试用例,它运行正常。 但是在提交时,它说的是错误的答案!

我曾尝试过很多方法来解决这个问题,但徒劳无功! 请告诉我可能做错了什么! 链接到问题:http://www.spoj.com/problems/BYTESE2/

1 个答案:

答案 0 :(得分:0)

代码对我来说似乎完全没问题。喜欢将开始时间保存为正值和结束时间为负值的方法,但似乎在给定问题中时间并不总是正的,即Hagrid可能已经开始从某个负数开始记录时间,所以在在这种情况下,开始和结束时间都可能是负面的,这会给出这种方法的错误答案。因此,您将不得不使用一些额外的内存来存储它是开始还是结束时间。我将您的代码编辑为以下内容并且已被接受。

#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;

bool compare(const pair<int, bool> &i, const pair<int, bool> &j)
{
    return (i.first < j.first);
} 

int main()
{
    int t,n;
    vector <pair<int, bool> > v;
    cin>>t;
    while(t--)
    {
        cin>>n;

        int start, end, i, j;
        j=0;
        for(i=0;i<n;i++)
        {
            cin>>start>>end;
            pair <int, bool> p1 (start, true);
            pair<int, bool> p2 (end, false);
            v.push_back(p1);
            v.push_back(p2);
        }
        sort(v.begin(), v.end(), compare);
        int c=0, max=0;
        vector <pair<int, bool> >::iterator it = v.begin();
        while(it != v.end())
        {
            if((*it).second)
                c++;
            else
                c--;
            if(max < c)
                max = c;
            it++;
        }
        cout<<max<<endl;
        v.clear();
    }
    return 0;
}