谁能吧下面这段C的标程翻译成Pascal啊 题目:忙碌的John
现在学Pascal,看标程总是有C或C++的,不知道如何翻译成PASCAL,网上下载的翻译器有没用,恳请哪位从Pascal转C的大牛翻译一下C版本的程序。题目名称:忙碌的John提交程序:john.???(pas,c,cpp)输入文件:john.in输出文件:john.out时间限制:1s题目描述:John是他镇上唯一的牧师... 展开
现在学Pascal,看标程总是有C或C++的,不知道如何翻译成PASCAL,网上下载的翻译器有没用,恳请哪位从Pascal转C的大牛翻译一下C版本的程序。题目名称:忙碌的John提交程序:john.???(pas,c,cpp)输入文件:john.in输出文件:john.out时间限制:1s题目描述:John是他镇上唯一的牧师。10月26日是他一年中最忙的日子,因为在一个古老传说中这一天结婚的夫妻将受到上帝的保佑,而他要负责为镇上的每一对新人做祈祷。每对新人将在Si到Ti的时间段举行他们的婚礼,而根据传统他们在婚礼中某一段时间要举行一个仪式,他们站在John面前接受John给他们的祈祷。仪式的持续时间是整数,且至少要超过婚礼持续时间的一半,并且这个仪式不能中途被打断。令John头痛的是,同一时刻他只能为一对新人祈祷,他不知道如何安排时间使得他可以为所有新人完成祈祷。请写一个程序告诉John能否通过合理的安排使得他能为所有新人举行仪式。输入格式输入包含多组测试数据,且保证最多有十组。每组数据第一行包含一个整数n(1<=n<=30000),表示举行婚礼的新人对数。接下来n行,每行包含两个整数Si和Ti(0<=Si<=Ti<=2147483647),表示每个婚礼的起始和终止时刻。输入以一组n=0结束。对于这组数据程序不应有任何输出。输出格式对于每组输入,如果能找到一种合法的安排,输出一行“YES”,否则输出“NO”。样例输入31 52 43 621 54 60样例输出NOYES能不能请各位高手讲一下这道题的具体算法?我有C的标程,但我看不懂,如果不讲算法直接翻译成PASCAL也可以,谢了~//#include <iostream>#include <cstring>#include <string>#include <cstdio>#include <algorithm>#include <cmath>#include <cstdlib>using namespace std;int l[200000],r[200000],t[200000],s[200000],need[200000];int i,j,k,o,p,n,m,now;bool cmp(int i,int j){return t[i]<t[j];}int main(){freopen("john.in","r",stdin);freopen("john.out","w",stdout);for (;;){scanf("%d",&n);if (n==0) break;for (i=0;i<n;i++){scanf("%d%d",&l[i],&r[i]);t[i]=l[i]+r[i];need[i]=(r[i]-l[i])/2+1;s[i]=i;} sort(s,s+n,cmp);now=0;k=0;for (j=0;j<n;j++){i=s[j];if (now<l[i]) now=l[i];now+=need[i];if (now>r[i]){k=1;break;}}if (k==1) printf("NO\n");else printf("YES\n");}return 0;} 收起
其他答案
var l[0..199999],r[0..199999],t[0..199999],s[0..199999],need[1..199999]:integer;i,j,k,o,p,n,m,now:integer;fin,fout:text;function cmp(i,j:integer):boolean {var} begin if t[i]<t[j] then 展开
var l[0..199999],r[0..199999],t[0..199999],s[0..199999],need[1..199999]:integer;i,j,k,o,p,n,m,now:integer;fin,fout:text;function cmp(i,j:integer):boolean {var} begin if t[i]<t[j] then cmp:=true else cmp:=false;end;begin assign(fin,"john.in");reset(fin);assign(fout,"john.out");rewrite(fout);n:=1;while (n<>0) begin readln(fin,n);if n = 0 then break;for i:=0 to n-1 do begin readln(fin,l[i],r[i]);t[i]:=l[i]+r[i];need[i]:=trunc((r[i] - l[i]) / 2) + 1;s[i]:=i;end;{sort(s,s+n,cmp);这段对s数组的前n个数根据cmp函数两两比较排序,小的在前大的在后,就是一个排序过程} now:=0;k:=0;for j:=0 to n - 1 do begin i:=s[j];if now<l[i] then now:=l[i];now:=now+need[i];if now>r[i] then begin k:=1;break;end;end;if k=1 then writeln(fout,'No') {原来的代码里是直接屏幕输出的,但是看题目还有代码前面的意思应该是输出到文件的} else writeln(fout,'YES');end;close(fin);close(fout);{原来的代码里没有关闭文件指针,这里添上了}end. 收起
2011-01-18 12:01
来自北京市
赞(0)点赞赞(0)举报
发布评论
免责声明:问答内容均来源于互联网用户,房天下对其内容不负责任,如有版权或其他问题可以联系房天下进行删除。
相关问题
- 1回答 哪位仁兄帮忙把C的程序转成PASCAL 这年代连个翻译器都没有 哎
- 1回答 在Pascal运行程序的时候,有时候对一个实数取整的时候出现下面的问题
- 1回答 删除字符串指定下标,这段程序不能正常运行
- 1回答 帮助看一看这段C程序
- 1回答 在线急求!!单片机80C51编程题目
- 1回答 1.下面的这段C#源代码是什么意思
- 1回答 下面这个C++程序怎么编啊
- 1回答 请问下面这段话的标点符号用得对不对?
- 1回答 c语言程序设计实验教程 的程序设计实验题目解析 (清华大学出版社)
- 1回答 钢化玻璃移门,有3c标识的部位应该放在门上面还是在门下面?有标准吗?
- 1回答 我想问3C标志购买的流程是如何的呢?
- 1回答 钢化玻璃移门,有3c标识的部位应该放在门上面还是在门下面?有标准吗?
- 4回答 实木产品油漆标准制作工艺流程是(单选) a三底四面 b四底两面 c五底三面 d六底四面
- 1回答 墙面铺装工程施工工艺标准是什么呢家里这段时间做了墙面铺装,但是没过多久,发现家里的墙面掉了墙皮,所以想问一下墙面铺装工程施工工艺标准是什么?
- 3回答 农村自建房购买的C30混凝土出现质量不达标,导致大梁有裂纹,卖方【卖混凝土的】口头承诺是不是应该走法律程序?
- 1回答 定义:①招标指招标人在买卖大宗商品、发定义:①招标指招标人在买卖大宗商品、发包建设项目或合作经营某项业务前,不经过一般交易磋商程序,而是公开征求应征人递盘竞争,最后由招标人选定交易对象订约的交易方式。②标的指招标方在公开招标前根据其近年来的情况,并充分考虑企业的资金有机构成和固定资产状况,以及生产、市场情况与经营环境等因素,通过测算所确定的最低招标基数。③租赁指出租人(或租赁公司)用自有资金或向银行借款购置设备,出租给承租人在约定时间内使用,承租人依约付给出租人一定租金的一种经营方式。租赁期内出租人拥有设备所有权,承租人则拥有使用权,并在租赁期届满时有权作出续租、退租或购留的选择。典型行为:(1)某市第三建筑工程公司在银鑫房地产公司计划开发的“银鑫花园”公开招标时,通过对其他投标方的观察确定了己方竞标基数为3130万元。(2)某市政府为修建中心农贸市场,发布通告,征求具有二级资质以上的单位前来竞标。(3)乙方在承租甲方的60平方米住房及配套生活设施后,将甲方房内的洗衣机、电视机等都卖掉了。上述典型行为与定义存在对应关系的数目有( )。 A. 0个 B. 1个 C. 2个 D. 3个
回答成功


