Общий форум#include <bits/stdc++.h> using namespace std; struct duy{ long long x,y; }; duy a[100005]; bool cmp1(duy a, duy b){ return a.x>b.x; } bool cmp2(duy a, duy b){ return a.y>b.y; } long long n,dem=0,t=-99,s[100005][2],duoi[100005],res=0; double q; int main() { cin>>n; for(long long i=1; i<=n; i++) cin>>a[i].x>>a[i].y; sort(a+1,a+n+1,cmp1); for(long long i=1; i<=n; i++){ if(a[i].x==t) s[dem][2]++; else{ dem++; s[dem][1]=a[i].x; s[dem][2]=1; t=a[i].x; } } duoi[dem]=0; for(long long i=dem-1; i>=1; i--) duoi[i]=duoi[i+1]+s[i+1][2]; for(long long i=1; i<=dem-1; i++) res=res+s[i][2]*duoi[i]*(s[i][1]-s[i+1][1]); sort(a+1,a+n+1,cmp2); dem=0; for(long long i=1; i<=n; i++){ if(a[i].y==t) s[dem][2]++; else{ dem++; s[dem][1]=a[i].y; s[dem][2]=1; t=a[i].y; } } duoi[dem]=0; for(long long i=dem-1; i>=1; i--) duoi[i]=duoi[i+1]+s[i+1][2]; for(long long i=1; i<=dem-1; i++) res=res+s[i][2]*duoi[i]*(s[i][1]-s[i+1][1]); q=((double)((double)2*(double)res))/((double)((double)n*(double)(n-1))); cout<<roundf(q*1)/1; } var b:array[1..4] of int64; i:integer; begin for i:=1 to 4 do read(b[i]); for i:=4 downto 1 do writeln(sqrt(b[i]):0:4); end. You think there are 4 and only 4 numbers in the input. Could you quote task fragment declaring it? Edited by author 21.02.2017 14:22 I got TLE, but when i used Visual C++ 2010 I hot AC. It worked for me, I hope it will work also for you Thank you so much for the tip. Worked fine for me as well. Task is compiler-independent. Here are successful GCC runs in my recent successful runs: 7147656, 0.249 sec - using printf/scanf; 7147682, 0.28 sec - using IO streams and std::ios_base::sync_with_stdio(false). I also had the same mistake, use "ios_base::sync_with_stdio(false);" and get AC WBBB BBBW WBWB BBBB 101 010 101 2 BBBB BBWW BBBB WWBW 010 111 010 3 can you explain your examples I use priority queue,the memory that I used is 236 KB,but I still WA at test 5,but I don't know why... You need use unsigned int. could someone tell me why ? Edited by author 18.02.2017 05:40 Edited by author 18.02.2017 05:40 2^31-1 can be stored into signed int. But, when length of input is even, you need to value average, so (probably) add 2 values and receive integer overflow. It doesn't mean you must use unsigned. You can avoid overflow in any other way. Looks like you re-valuate a[] for every input number. Why? It can be valued once, before "while(t--) {...}" cycle. Formatting is weird a bit. Why? To prevent reading? Looks like you re-valuate status[] for every input number. Why? It can be valued once, before "while(t--) {...}" cycle. What do you think, why this comment is the same with previous one? Have you read previous one? I am using bfs to solve the problem but still getting TLE. Can anyone suugest the cause? My graph consists of vertexes, which are points, that allow diagonal crossing. Edge (a, b) exists if and only if (a) strictly south-west from (b). Since graph is built, simple dfs easily helps solve the problem ( length of the longest path in the graph - it's diagonal part of result path ). To avoid TLE#10 in this approach, memorization should be used. I know, it's not the best approach, but since constraints are relatively low, it does work. My AC - 0.015 164 КБ. I think, Longest increasing subsequence - is better in general case. how you use longest increasing subsequence in this problem ? To avoid TLE#10 in this approach, memorization should be used. Thanks, it helped me) I added functools.lru_cache() decorator for my Python program and got AC :) Shouldn't we use bfs as we require the shortest path? I got AC. My time is 0.001s (This problem #1222) - Objected-oriented progarmming, call methods, cycles in cycles... But my time of Problem #1000 (A+B) (int + int) - 0.015s Why? :))) Rounding. You can get times of 0.001, 0.015, 0.031, 0.046, 0.062 etc (the step is around 15.5). And, of course, 0.015 wouldn't mean you have exactly that time; it would rather mean that you have somewhere between 0.002 and 0.015. Or around that. Thanks. Possible time interval of 15 ms, I saw a long time ago. Just do not understand, he can not keep within the 1 ms solution like С++: ----------------------------------- #include <iostream> using namespace std; int main() { int a,b; cin>>a>>b; cout<<(a+b)<<"\n"; } ----------------------------------- or Pascal: ----------------------------------- var a,b: integer; begin readln(a,b); writeln(a+b); end. ----------------------------------- I think it should work many times faster than 1 ms. Time spent on the input and output? P.S. Today I passed the task of "1000 A + B Problem" of 0.001s. But usually - 0.015s. :) Hypotesis: The program may start at the beginning or end of the interval timer - and depending on this time will be different. If TLE < 0.014, repeat Submit, while not AC! ))) Доброго всем времени суток. Прошу помочь разобраться, в чем может состоять проблема моего кода. В NetBeans все компилируется без проблем, здесь же выдается ошибка RuntimeError. Я здесь впервые, поэтому прошу не судить (З.Ы. Руководство по написанию java скриптов прочел и до сих пор не нашел ошибки). Заранее всем спасибо. Hi all! I'm asking you for help, cause my script cannot be run by server java compiler. In NetBeans it works well, but here that's a RuntimeError. Thank you in anvance. import java.util.Scanner; import java.io.PrintWriter; public class Cryptography { final String alphabetStr = "abcdefghijklmnopqrstuvwxyz";
public static void main(String[] args) { new Cryptography().run(); } void run() { Scanner in = new Scanner(System.in, "ISO-8859-1"); PrintWriter out = new PrintWriter(System.out); String word = in.next(); out.println( descript(word) ); out.flush(); }
String descript(String word) { int index = alphabetStr.indexOf( word.charAt( word.length()-1 ) );
if ( word.length()==1 ) return ("" + alphabetStr.charAt(index-5));
index -= alphabetStr.indexOf( word.charAt( word.length()-2 ) ); if ( index<0 ) index += 26; return descript(word.substring(0, word.length()-1)) + alphabetStr.charAt(index); }
} Edited by author 17.02.2017 16:13 Edited by author 17.02.2017 16:15 If "Runtime error" happened than your program compiled successful and crashed while running. As you have RE on 4th test your program passed first 3 tests. > int index = alphabetStr.indexOf( word.charAt( word.length()-1 ) ); > if ( word.length()==1 ) return ("" + alphabetStr.charAt(index-5)); How should it work for string "a" for example? Just before you answered i've found exactly this problem. Thank you! This is my program: #include <stdio.h> int len[16]; int ldist[16]; int rdist[16]; int depart; int gor,gol,iv; int N; void prelr() { int i; ldist[0]=0; for (i=1;i<N;i++) ldist[i]=ldist[i-1]+len[i-1]; for (i=N-2;i>=0;i--) rdist[i]=rdist[i+1]+len[i]; } void read() { scanf("%d",&N); int i; for (i=0;i<N-1;i++) scanf("%d",&len[i]); scanf("%d",&depart); depart--; scanf("%d%d%d",&iv,&gor,&gol); } int best; bool first; int deptime; void nexttimepoint(int&time,int&posi,int&dir) { //Test nearest shuttle int tmp; if (dir==1) { tmp=((time-ldist[posi]-gor)%iv+iv)%iv; if (tmp!=0) tmp=iv-tmp; time+=tmp; } else { tmp=((time-rdist[posi]-gol)%iv+iv)%iv; if (tmp!=0) tmp=iv-tmp; time+=tmp; } //Record if it's first if (first) { first=false; deptime=time; } //Make path if (dir==1) { time+=len[posi]; posi++; } else { time+=len[posi-1]; posi--; } //Test if reverse needed if (posi==0) dir=1; if (posi==N-1) dir=-1;
} void testdepart(int direct) { int i,time,p,delayi,dir; int last; for (i=1<<(N-2);i-->0;) { delayi=i; last=(1<<N)-1; if (direct==1) time=ldist[depart]; else time=rdist[depart]; p=i; dir=direct; p=depart; first=true; nexttimepoint(time,p,dir); while (p!=depart||dir!=direct) { if (p==0||p==N-1) time++; else if (last&(1<<p)&&p!=depart) { if (delayi&(1<<(p-1))) delayi^=1<<(p-1); else { last^=1<<p; time++; } } nexttimepoint(time,p,dir); } if (best>time-deptime) best=time-deptime; } } void process() { prelr(); if (depart!=N-1) testdepart(1); if (depart!=0) testdepart(-1); } int main() { read(); best=2147483647; if (N==1) printf("0\n"); else process(); printf("%d\n",best); return 0; } Thanks. These two absolutely random test based on my AC prog 6 7 6 3 2 8 3 12 56 34 res:96 12 1 2 45 64 31 23 128 61 2 2 7 8 11 1001 31 res:825 Edited by author 07.09.2010 23:23 Edited by author 07.09.2010 23:24 These two absolutely random test based on my AC prog 6 7 6 3 2 8 3 12 56 34 res:96 12 1 2 45 64 31 23 128 61 2 2 7 8 11 1001 31 res:825 I think it`s wrong answer, because this need at least 1 train starting in 1, and it takes 1001 minutes, but your answer less than it. Let then another AC authors apply their programs to these tests The interval between the trains is nonzero and doesn’t exceed 10^5, and the departure time from the terminal stations doesn’t exceed the interval. In your tests it is not true. Edited by author 01.04.2011 17:46 Edited by author 01.04.2011 17:46 Yes, I solved problem with more wide conditions. In my test 11 1001 31, and 1001,31>11. But my algo (DP) allow such expansion. So tests are useful. Solve problem in broader conditions and get AC in narrow case. These two absolutely random test based on my AC prog 6 7 6 3 2 8 3 12 56 34 res:96 12 1 2 45 64 31 23 128 61 2 2 7 8 11 1001 31 res:825 My AC program gives 156 and 1837 respectively. So... weak tests? Edited by author 13.10.2014 19:33 These tests are wrong as "departure time from the terminal stations doesn’t exceed the interval." not trusted. try test 1 1 100 100 100 answer is 0 :) can anyone tell me why the sample's answer is 28? using System; namespace ConsoleApplication { internal class Program { public static void Main(string[] args) { var i = Convert.ToInt32(Console.ReadLine()); var v = i; var b = v; var z = Math.Abs(i); var x = 0; if (b<0) { x = -2; } else { x = 0; } var sum = 0; while (x!=z) { sum = sum + v; if (b<0) { v++; } else { v--; } x++; } Console.WriteLine(sum); } } } The primality of the table for n=5 is equal to 3 ? I understood) for n=5 answer 4 ) I found Edited by author 22.10.2013 07:58 if n=5 then matrix view that: 1 20 19 18 17 2 21 22 15 16 3 24 23 14 13 4 25 8 9 12 5 6 7 10 11 ??? 13 14 17 18 19 12 15 16 21 20 11 10 9 22 23 2 1 8 7 24 3 4 5 6 25 Edited by author 16.02.2017 22:14 [code deleted] Edited by moderator 19.11.2019 23:54 Could you tell me why? Thanks in advance!! Edited by author 29.07.2008 17:35 Actually,it is a "check"... lol, your algo works as much as 0.031 seconds. but mine works 0.015: [code deleted] Edited by moderator 19.11.2019 23:55 [code deleted] //c language. 0.001 sec Edited by moderator 19.11.2019 23:55 but mine works 0.001 LOOOOL You must use smaller type: BYTE #include<iostream> #include<math.h> using namespace std; int main() { int n; int p; double a; int i; cin>>n; int flag; for(p=sqrt(n*2);p>0;p--) { a=(double)n/p-(double)(p-1)/2; if(a==(int)a && a>0) { cout<<a<<" "<<p; return 0; }
} cout<<n<<" "<<1; return 0; } Edited by author 09.10.2008 14:39 cout << (int)a << " " << p; :) #include <stdio.h> #include <math.h> #include <stdlib.h> #define SIZE 1024 int main(void) { unsigned long long int *buffer = \ (unsigned long long int *) malloc(sizeof(unsigned long long int) * SIZE); int i = 0;
while (scanf("%llu", &buffer[i]) > 0) i++;
for(i -= 1; i >= 0; i--) printf("%.4f\n", sqrt(buffer[i]));
return 0; } У меня всё работает, на тестовых данных выдаёт правильный результат. В чём косяк? Edited by author 14.02.2017 15:27 > #define SIZE 1024 Number is wrong. Max input size is much bigger. Пробовал и большие числа туда вписывать. Всё равно не работает. Точнее, оно работает, но у меня на компе.. а вот на сайте проверку не проходит > и большие числа Which one? How did you estimate max input size? By task, max input size is 256K bytes . Assuming 2 bytes per number - "1 " - max input size is 128K numbers. Btw, why raw C? Why not C++ with stl containers? Edited by author 15.02.2017 12:38 > Btw, why raw C? Why not C++ with std containers? Не интересует С++ с его чрезмерной сложностью и нагромождением какой-то невероятной кучи всякого-разного :) Мне как-то больше по душе чистый и простой С. А задачу, кстати, всё-таки решил. Действительно, нужно было просто сильно увеличить размер массива. Я сделал #define SIZE 10241024. Большое спасибо за помощь! Edited by author 15.02.2017 12:42 #include <bits/stdc++.h> using namespace std; float p,q,t1,t2,t3,l1,l2; int main() { cin>>p>>q; for(int i=1; i<=1000000; i++){ t1=(p*(float)i)/(float)100; t2=(q*(float)i)/(float)100; l1=(int)t1; l2=(int)t2; if(l1==t1||l2==t2||l1!=l2){ if(l1!=t1) l1=l1+1; for(int j=l1; j<=l2; j++){ t3=((float)j/(float)i)*(float)100; if(p-0.000001<t3&&t3<q+0.000001){ cout<<i; return 0; } } } } } I can only get 2 3 1 3 4 3 2 3 2 according to the sample output... understand now... four populated adjcent cells has anyone done it in O(n)? But this solution is O(n^2) becouse of ... 7 for each value i in a 8 for each node j in T ... maybe I don't understand whi it is O(n) so I ask you tell me why please. Sorry for bad English. Никто с форума не знает решение O(N), т.к. в рейтинге решений у всех время 0.015, которое соответствует N*logN (я сам так решил). Идея задачи проста-на очередном шаге находить ещё не использованные вершинки (а также отсутствующие в оставшемся списке),и среди всех таких вершины с минимальным номером. Это как раз и будут "очередные" в "оставшемся" дереве висячие вершины. Стандартное решение с использованием кучи работает O(N*logN). Если кто-нибудь ДЕЙСТВИТЕЛЬНО знает решение за O(N), то напишите на общем форуме. Edited by author 28.08.2015 00:24 I'm implemented O(N) algo, and got 0.001s AC!. You can easily do it in O(N) with counting sort. |
|