Common Boardvar sh,de:string; a:array[1..100]of integer; i,n:Integer; begin readln(sh); n:=length(sh); for i:=1 to n do a[i]:=ord(sh[i])-97; for i:=2 to n do if a[i]<a[i-1] then a[i]:=a[i]+((a[i-1]-a[i])div 26 + 1)*26; for i:=n downto 2 do a[i]:=a[i]-a[i-1]; a[1]:=a[1]-5; de:=''; for i:=1 to n do de:=de+chr(97+a[i] mod 26); writeln(de); end. i didn't understand where is my mistake a[1] can be less than 5. Edited by author 05.08.2011 16:43 Edited by author 05.08.2011 16:43 You are great! I got the same mistake. if you problem input is "adham" . what is output? output is "vdetm" . You should know if the first letter is "a" or "b" or "c" or "d" or "f" (char)("a" + 26) is correct way! Паскаль почти все задачи по лимиту не проходят на одно и то же время, почему??? The correct format of the input is: <width of the book w/o the cover> <width of the cover> <number of the book where the worm _finishes_> <number of the book where the worm _starts_> (so, the last two were just given in the incorrect order) I disagree. Order of input data is absolutely correct. So whould you mind explaining me the 'Sample output'? I treated the input as I wrote above and got AC.. I did as he told and got AC, too. You are wrong, guys. Input format is correct. You're lucky that ACed the problem without thinking about it. Think - and you'll find out that input specification is indeed correct - it's a very famous logical puzzle =) The input format is entirely correct. The problem requires knowledge about how REAL books are USUALLY placed on shelves. The problem is very old trick really. I am sure many of contestants were already familiar with it (I was). Edited by author 12.10.2008 20:12 Edited by author 12.10.2008 20:12 So.. Do you (all of you who says that input format is correct) mean that books are stored in a way that the last page is the leftmost one? If so than it's not surprising that the solution which swaps numbers of the books gets AC. yes, just imagine. when you place books on the shelf, the books are facing inwards, which means, the first page is on the right and the last page is on the left. Hah, I wasn't familiar with this particular trick, but I've done enough of the "simple" problems on Timus now to know that many problems derive their difficulty not from the underlying algorithm, but in correctly understanding problem statements which are sometimes tricky, ambiguous, or rely on unstated assumptions (like this one, assuming how people "normally" put books on shelves, and which side of the book contains the first page). So I'm learning to always ask "what's the catch?" and got AC first time on this one (after initial WA on many other "simple" problems). So solving Timus problems is successfully training me to read problems very carefully! If you are really smart, try the problems not one get AC before, otherwise get the hell out of your pretentious mask. Someone can explain the example test case and how this work for me? I read this problem many many times but still can't understand what this mean :( You have to get inside the Author's head, and ask him/her. I am not going to be bothered with such problem any more. input 2 1 output 0 this is correct. however this solution get WA. AC program writes 1, which is wrong in fact. yea, U're Right yea, U're Right It depends... Think more... In fact. It is 1. Think... Edited by author 26.04.2014 19:40 input : tatu!.?.?.!utat output : "" Edited by author 20.06.2013 00:20 Edited by author 20.06.2013 00:21 Edited by author 20.06.2013 00:35 Штирлиц же "Убирает все пробелы и знаки препинания." That's a totally wrong test cases. The AC program won't give "". It is still original string. Besides there are NOT punctuation inside string. object _1001 { def main(args: Array[String]): Unit = { println(scala.io.Source.stdin.getLines.flatMap(_.split(" ").filter(!_.isEmpty())).toArray.reverse.map(t => math.sqrt(t.toDouble)).mkString("\n")) } } #include <iostream> using namespace std; main() { int a, b; cin >> a >> b; if (39+2*a>a+2*b) cout << 39+2*a; else cout << 40+2*b; } my code is wrong :CC where is error? Edited by author 26.04.2014 10:14 One single letter count! Of course, Any substring would include one letter. #include<stdio.h> main() { int n,i,j; scanf("%i",&n); for(i=1;i<n;i++) printf("("); for(i=1;i<=n;i++) { for(j=1;j<=i;j++) { if(j>1) printf((j&1)?"+":"-"); printf("sin(%i",j); } for(j=1;j<=i;j++)printf(")"); printf("+%i",n+1-i); if(i!=n)printf(")"); } } A concise code. Much better than mine. I keep getting wrong answer at the 2 example. Isn't it from the examples provided? If so, why for 0 0 4 3 6 0 the solution NO 0 0 5 0 1.6 1.2 is not correct? A1B1 is equal to A2B2, B1C1 is equal to B2C2, C1A1 is different from C2A2, the cosine is the same, therefore the angle is the same. Tell me please. m = f(n) = f(n-1) + f(n-2) why f(n-1) :- put W and [R,...(n-1)] or R and [W,...(n-1)] why f(n-2) :- put R,B and [W,..(n-2)] or W,B and [R,...(n-2)] HTH How supernatural it is~~ ^_^ ! 哇靠~~这么科幻~~~ Looking Good! That's it! Why I got stuck! using System; namespace TestOfCSharp { class Program { static void Main(string[] args) { int N = int.Parse(Console.ReadLine()); int[] output = new int[N]; for (int c = 0; c < N; c++) { int K = int.Parse(Console.ReadLine()); int counter = 0; for (int j = 1; j <= K; j += counter, counter++) if (j == K) output[c] = 1; } foreach (int c in output) Console.Write("{0} ", c); } } } Use formula wisely, not for... Algo O(nm) works for 1.046 sec, but O(2n) uses more than 65536kb. Edited by author 02.01.2014 15:28 1.031 for O(NxM) with pre-exit after left coordinate of segment > coordinate of point. Any idea for modifications? 0.625 for O(mlogn) solution using C++ STL set... I think the problem is harder, than its difficulty score if there is no easier solution. Well, okay, there is a O(mlogn) solution with sorting only and 0.125s execution time. Can you please write some more details for sorting based algorithm? I think you can search for red-black trees algo, it has O(nlogm) but its realy hard as for me. This problem can be solved fast, if you'll try not to consider common solution, but only this ( there is some useful limits in statement, also order is very convenient ) case. Small hint, that I promised: Imagine a big-length wall, like in old platformers, where segments are vertical levels and segment's coords are horizontal coords. Example: 4 2 10 2 3 5 7 6 7 00000011000 00110111000 00111111111 1 are bricks in our wall. Edited by author 14.03.2014 11:03 Since the input is sorted already, there is a O(n+m) solution As the title says, I get time limit exceeded error with 0.375 seconds execution time. There is something definitely wrong here. My solution works just fine, the problem isn't that difficult. But on test 11, I time out for unknown reason. I am wondering why i got wa on test #1. I use dfs to color the edges. when one edge is not colored it means it makes a cycle and thus should be deleted. Next, every time I make dfs with a vertex, I connect it to a vertex processed before, which means the current vertex is connected to a component marked before. Lastly I used long long to store the result. But I just got wa on test #1. Can anybody please tell me sth about test #1 ? Lots of thanks Oh damn it. My first version of code is: int d, a, countd, counta; ...... long long money = d * countd + a * counta; But I didn't realize that d * countd may have already overflowed. So my AC version is: long long d, a, countd, count; ...... long long money = .....; Thus if anyone got WA at test #1 and you are sure you have the right algo, you may have failed due to the same reason as mine. Am I right that some AC solutions will be failed on these tests? ) 5 10 2 1 3 1 4 2 5 2 3 5 4 5 2 4 5 5 2 2 5 1 10 19 2 1 3 2 4 2 5 1 6 3 7 4 8 6 9 8 10 4 5 2 10 5 8 10 2 7 10 1 7 9 3 6 10 10 10 3 5 3 16 20 2 1 3 1 4 3 5 3 6 2 7 2 8 7 9 8 10 8 11 10 12 8 13 11 14 10 15 12 16 3 9 1 15 2 2 13 2 1 7 15 This network layout is guaranteed to be connected, and there are no links connecting a node with itself. My solution using DFA works half a second. In the ranking of many solve the problem for 0.1 second. How? import java.util.Scanner; public class firstexercise{ public static void main(String[]args){ Scanner scanner=new Scanner(System.in); int c=0; System.out.println("Введите первое число."); int a=scanner.nextInt(); System.out.println("Введите второе число."); int b=scanner.nextInt(); c=a+b; System.out.println("Ответ = " + c); } } There should be no prompt message and output only answer: import java.util.Scanner; public class firstexercise{ public static void main(String[]args){ Scanner scanner=new Scanner(System.in); int c=0; int a=scanner.nextInt(); int b=scanner.nextInt(); c=a+b; System.out.println(c); } } |
|