admins why CE??? help
In Microsoft VS2008. I get right answers, why CE?
thanks.
Here is my code:
#include <iostream>
#include <algorithm>
#include <set>
#include <map>
#include <string>
using namespace std;
set <pair <string, pair <string, __int64> > > People;
set <pair <string, __int64> > City, Ans;
multiset <pair <__int64, string> > CityCost;
pair <string, pair <string, __int64> > nName, mName;
pair <string, __int64> cPair;
pair <__int64, string> ccPair;
class InInterval {
public:
InInterval() {};
bool operator () (const pair <string, __int64> a) {
return (nName.second.first == a.first);
}
};
class IsPeople {
public:
IsPeople() {};
bool operator () (const pair <string, pair <string, __int64> > a) {
return (nName.first == a.first);
}
};
class InCity {
public:
InCity() {};
bool operator () (const pair <__int64, string> a) {
return (nName.second.first == a.second);
}
};
class InAns {
public:
InAns() {};
bool operator () (const pair <string, __int64> a) {
return (nName.second.first == a.first);
}
};
int main() {
// freopen("input.txt", "rt", stdin);
// freopen("output.txt", "wt", stdout);
int n, m, k;
char ch;
set <pair <string, pair <string, __int64> > >::iterator it;
set <pair <string, __int64> >::iterator itr;
multiset <pair <__int64, string> >::iterator msitr;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%c", &ch); scanf("%c", &ch); nName.first = "";
while (ch != ' ') {
nName.first += ch; scanf("%c", &ch);
}
scanf("%c", &ch); nName.second.first = "";
while (ch != ' ') {
nName.second.first += ch; scanf("%c", &ch);
}
scanf("%I64d", &nName.second.second);
People.insert(nName);
itr = find_if(City.begin(), City.end(), InInterval());
if (itr == City.end()) {
cPair.first = nName.second.first;
cPair.second = nName.second.second;
City.insert(cPair);
ccPair.first = cPair.second;
ccPair.second = cPair.first;
CityCost.insert(ccPair);
} else {
(*itr).second += nName.second.second;
msitr = find_if(CityCost.begin(), CityCost.end(), InCity());
CityCost.erase(msitr);
ccPair.first = (*itr).second;
ccPair.second = (*itr).first;
CityCost.insert(ccPair);
}
}
int pred = 1, pos, npos;
__int64 cost;
scanf("%d%d", &m, &k);
for (int i = 0; i <= k; i++) {
if (i != k) {
if (i == 0)
scanf("%d", &pos);
scanf("%c%c", &ch, &ch);
nName.first = "";
while (ch != ' ') {
nName.first += ch;
scanf("%c", &ch);
}
nName.second.first = "";
scanf("%c", &ch);
while (ch != '\n') {
nName.second.first += ch;
scanf("%c", &ch);
}
} else {
pos = m;
nName = mName;
}
if (i != k)
scanf("%d", &npos);
msitr = CityCost.end();
msitr--;
cost = (*msitr).first;
if (CityCost.size() == 1) {
mName = nName;
nName.second.first = (*msitr).second;
cPair.second = pos - pred;
cPair.first = (*msitr).second;
itr = find_if(Ans.begin(), Ans.end(), InAns());
if (itr == Ans.end()) {
Ans.insert(cPair);
} else {
(*itr).second += cPair.second;
}
nName = mName;
nName.second.first = (*it).second.first;
itr = find_if(City.begin(), City.end(), InInterval());
(*itr).second -= (*it).second.second;
msitr = find_if(CityCost.begin(), CityCost.end(), InCity());
CityCost.erase(msitr);
ccPair.first = (*itr).second;
ccPair.second = (*itr).first;
CityCost.insert(ccPair);
nName = mName;
(*it).second.first = nName.second.first;
nName.second.second = (*it).second.second;
itr = find_if(City.begin(), City.end(), InInterval());
if (itr == City.end()) {
cPair.first = nName.second.first;
cPair.second = nName.second.second;
City.insert(cPair);
ccPair.first = cPair.second;
ccPair.second = cPair.first;
CityCost.insert(ccPair);
} else {
(*itr).second += nName.second.second;
msitr = find_if(CityCost.begin(), CityCost.end(), InCity());
CityCost.erase(msitr);
ccPair.first = (*itr).second;
ccPair.second = (*itr).first;
CityCost.insert(ccPair);
}
} else {
msitr--;
if ((*msitr).first == cost)
pred = pos;
msitr++;
mName = nName;
nName.second.first = (*msitr).second;
cPair.second = pos - pred;
cPair.first = (*msitr).second;
itr = find_if(Ans.begin(), Ans.end(), InAns());
if (itr == Ans.end()) {
Ans.insert(cPair);
} else {
(*itr).second += cPair.second;
}
nName = mName;
it = find_if(People.begin(), People.end(), IsPeople());
mName = nName;
nName.second.first = (*it).second.first;
itr = find_if(City.begin(), City.end(), InInterval());
(*itr).second -= (*it).second.second;
msitr = find_if(CityCost.begin(), CityCost.end(), InCity());
CityCost.erase(msitr);
ccPair.first = (*itr).second;
ccPair.second = (*itr).first;
CityCost.insert(ccPair);
nName = mName;
(*it).second.first = nName.second.first;
nName.second.second = (*it).second.second;
itr = find_if(City.begin(), City.end(), InInterval());
if (itr == City.end()) {
cPair.first = nName.second.first;
cPair.second = nName.second.second;
City.insert(cPair);
ccPair.first = cPair.second;
ccPair.second = cPair.first;
CityCost.insert(ccPair);
} else {
(*itr).second += nName.second.second;
msitr = find_if(CityCost.begin(), CityCost.end(), InCity());
CityCost.erase(msitr);
ccPair.first = (*itr).second;
ccPair.second = (*itr).first;
CityCost.insert(ccPair);
}
}
if (npos != pos)
pred = pos;
pos = npos;
}
for (itr = Ans.begin(); itr != Ans.end(); itr++) {
if ((*itr).second) {
for (int i = 0; i != (*itr).first.length(); i++) {
printf("%c", (*itr).first[i]);
}
printf(" %I64d\n", (*itr).second);
}
}
return 0;
}