Mendo Judge Discussion Board - Forums
Search
Recent Topics
Hottest Topics
Member Listing
Back to home page
[USACO] Barn Repair
Forum Index
»
Други задачи
Author
Message
28/03/2013 12:53:11
Subject:
[USACO] Barn Repair
addictus
Joined: 08/10/2010 11:22:51
Messages: 23
Location: Куманово
Offline
Си ја најдов грешката. Еве го моето решение за оваа задача.
/* ID: add1ctu1 LANG: C++ TASK: barn1 */ #include <fstream> //#include <iostream> #include <queue> #include <vector> #include <algorithm> using namespace std; int main() { ifstream cin ("barn1.in"); ofstream cout ("barn1.out"); unsigned short m,s,c; cin>>m>>s>>c; vector<unsigned short> cows; for(unsigned short j=0;j<c;j++) { unsigned short temp; cin>>temp; cows.push_back(temp); } sort(cows.begin(),cows.end()); vector<pair<unsigned short, unsigned short> > boards; boards.push_back(make_pair(cows.front(),cows.back())); if(m>=c) { cout<<c<<endl; return 0; } while(boards.size()<m) { unsigned short maxgap=0,gap=0,gapbegin=0,maxbegin=0,maxend=0,boardtoerase=0; for(unsigned short j=0;j<boards.size();j++) { gap=0; for(unsigned short k=boards.at(j).first+1;k<boards.at(j).second;k++) { if(find(cows.begin(),cows.end(),k)==cows.end()) { if(gap==0) { gapbegin=k; } gap++; if(gap>maxgap) { maxgap=gap; maxbegin=gapbegin; maxend=k; boardtoerase=j; } } else { gap=0; } } } /*cout<<"Found largest gap "<<maxbegin<<" "<<maxend<<endl; cout<<"Erasing "<<boards.at(boardtoerase).first<<" "<<boards.at(boardtoerase).second<<endl; cout<<"Inserting "<<boards.at(boardtoerase).first<<" "<<maxbegin-1<<endl; cout<<"Inserting "<<maxend+1<<" "<<boards.at(boardtoerase).second<<endl;*/ boards.push_back(make_pair(boards.at(boardtoerase).first,maxbegin-1)); boards.push_back(make_pair(maxend+1,boards.at(boardtoerase).second)); boards.erase(boards.begin()+boardtoerase); } unsigned short sum=0; for(unsigned short j=0;j<boards.size();j++) { sum+=boards.at(j).second-boards.at(j).first+1; } cout<<sum<<endl; return 0; }
This message was edited 2 times. Last update was at 28/03/2013 15:45:07
Решенија на задачи - aandevski.wordpress.com
28/03/2013 19:17:32
Subject:
Re:[USACO] Barn Repair
hristijan
Joined: 24/01/2010 09:42:46
Messages: 49
Offline
Користи int во for-овите, ништо не ти менува а пократко е => побрзо е за куцање. И дефинирај
#define pb push_back #define mp make_pair
ќе ти го направат кодот малце пократок и почитлив.
29/03/2013 05:26:13
Subject:
Re:[USACO] Barn Repair
obi1kenobi
Joined: 18/02/2010 20:01:33
Messages: 168
Offline
Јас користам и
#define all(c) (c).begin(), (c).end()
Мислам дека така кодот ќе ти биде уште почитлив
Forum Index
»
Други задачи
Go to:
Select a forum
Добродојдовте!
Општа дискусија
Задачи од национални натпревари
Задачи од меѓународни натпревари
Други задачи
Регионални натпревари
Државни натпревари
Македонски Олимпијади
Други натпревари
Pascal
C/C++
Јава
Други јазици
Powered by
JForum 2.1.8
©
JForum Team